diff options
author | Ben Murdoch <benm@google.com> | 2009-08-11 17:01:47 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2009-08-11 18:21:02 +0100 |
commit | 0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5 (patch) | |
tree | 2943df35f62d885c89d01063cc528dd73b480fea /WebKitTools | |
parent | 7e7a70bfa49a1122b2597a1e6367d89eb4035eca (diff) | |
download | external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.zip external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.gz external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.bz2 |
Merge in WebKit r47029.
Diffstat (limited to 'WebKitTools')
203 files changed, 48178 insertions, 23825 deletions
diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile index c3a935f..bd5e749 100644 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/Makefile @@ -7,7 +7,7 @@ # The 'reconfig' target will tell a buildmaster to reload its config file. start: - twistd --no_save -y buildbot.tac + /opt/local/bin/twistd2.5 --no_save -y buildbot.tac stop: kill `cat twistd.pid` diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/README b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/README new file mode 100644 index 0000000..3ba8a22 --- /dev/null +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/README @@ -0,0 +1,2 @@ +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/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac index f66e068..1a53acf 100644 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac @@ -2,9 +2,20 @@ from twisted.application import service from buildbot.master import BuildMaster -basedir = r'/home/mrowe/sites/build.webkit.org/buildbot' +basedir = r'/buildbot/webkit' configfile = r'master.cfg' +rotateLength = 1000000 +maxRotatedFiles = None 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/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json new file mode 100644 index 0000000..b650b4c --- /dev/null +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/config.json @@ -0,0 +1,98 @@ +{ + "slaves": [ { "name": "test-slave", "platform": "*" }, + + { "name": "bdash-slave-2", "platform": "mac-tiger" }, + + { "name": "apple-xserve-1", "platform": "mac-leopard" }, + { "name": "apple-xserve-2", "platform": "mac-leopard" }, + { "name": "apple-xserve-3", "platform": "mac-leopard" }, + + { "name": "apple-pixel-1", "platform": "mac-leopard" }, + + { "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": "gtk-linux-slave-1", "platform": "gtk"}, + + { "name": "szeged-linux-1", "platform": "qt"} + ], + + "builders": [ { "name": "Tiger Intel Release", "type": "BuildAndTest", "builddir": "tiger-intel-release", + "platform": "mac-tiger", "configuration": "release", "architectures": ["i386"], + "slavenames": ["bdash-slave-2", "test-slave"] + }, + + { "name": "Leopard Intel Release (Build)", "type": "Build", "builddir": "leopard-intel-release", + "platform": "mac-leopard", "configuration": "release", "architectures": ["i386"], + "triggers": ["leopard-intel-release-tests"], + "slavenames": ["apple-xserve-1", "apple-xserve-2", "test-slave"] + }, + { "name": "Leopard Intel Release (Tests)", "type": "Test", "builddir": "leopard-intel-release-tests", + "platform": "mac-leopard", "configuration": "release", "architectures": ["i386"], + "slavenames": ["apple-pixel-1", "test-slave"] + }, + + { "name": "Leopard Intel Debug (Build)", "type": "Build", "builddir": "leopard-intel-debug", + "platform": "mac-leopard", "configuration": "debug", "architectures": ["i386"], + "triggers": ["leopard-intel-debug-tests"], + "slavenames": ["apple-xserve-1", "apple-xserve-2", "test-slave"] + }, + { "name": "Leopard Intel Debug (Tests)", "type": "Test", "builddir": "leopard-intel-debug-tests", + "platform": "mac-leopard", "configuration": "debug", "architectures": ["i386"], + "slavenames": ["apple-xserve-3", "test-slave"] + }, + { + "name": "Windows Release (Build)", "type": "Build", "builddir": "win-release", + "platform": "win", "configuration": "release", "architectures": ["i386"], + "triggers": ["win-release-tests"], + "slavenames": ["apple-windows-2", "test-slave"] + }, + { + "name": "Windows Release (Tests)", "type": "Test", "builddir": "win-release-tests", + "platform": "win", "configuration": "release", "architectures": ["i386"], + "slavenames": ["apple-windows-4", "apple-windows-3", "test-slave"] + }, + { + "name": "Windows Debug (Build)", "type": "Build", "builddir": "win-debug", + "platform": "win", "configuration": "debug", "architectures": ["i386"], + "triggers": ["win-debug-tests"], + "slavenames": ["apple-windows-1", "test-slave"] + }, + { + "name": "Windows Debug (Tests)", "type": "Test", "builddir": "win-debug-tests", + "platform": "win", "configuration": "debug", "architectures": ["i386"], + "slavenames": ["apple-windows-4", "apple-windows-3", "test-slave"] + }, + { + "name": "GTK Linux Release", "type": "BuildAndTest", "builddir": "gtk-linux-release", + "platform": "gtk", "configuration": "release", "architectures": ["i386"], + "slavenames": ["gtk-linux-slave-1"] + }, + { + "name": "Qt Linux Release", "type": "BuildAndTest", "builddir": "qt-linux-release", + "platform": "qt", "configuration": "release", "architectures": ["i386"], + "slavenames": ["szeged-linux-1"] + } + ], + + "schedulers": [ { "type": "AnyBranchScheduler", "name": "trunk", "branches": ["trunk"], "treeStableTimer": 45.0, + "builderNames": ["Tiger Intel Release", "Leopard Intel Release (Build)", "Leopard Intel Debug (Build)", + "Windows Release (Build)", "Windows Debug (Build)", + "GTK Linux Release", "Qt Linux Release"] + }, + { "type": "Triggerable", "name": "leopard-intel-release-tests", + "builderNames": ["Leopard Intel Release (Tests)"] + }, + { "type": "Triggerable", "name": "leopard-intel-debug-tests", + "builderNames": ["Leopard Intel Debug (Tests)"] + }, + { "type": "Triggerable", "name": "win-release-tests", + "builderNames": ["Windows Release (Tests)"] + }, + { "type": "Triggerable", "name": "win-debug-tests", + "builderNames": ["Windows Debug (Tests)"] + } + ] +} diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg index 677e82a..4d92436 100644 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/master.cfg @@ -1,22 +1,335 @@ # -*- python -*- +# ex: set syntax=python: -import os -from twisted.web import static -static.File.contentTypes = static.loadMimeTypes(['/etc/mime.types', os.path.join(basedir, 'mime.types')]) +c = BuildmasterConfig = {} +from buildbot.buildslave import BuildSlave from buildbot.changes.pb import PBChangeSource -import webkit -reload(webkit) +from buildbot.scheduler import AnyBranchScheduler, Triggerable +from buildbot.status import html +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 -c = BuildmasterConfig = {} +from twisted.internet import defer + +import simplejson + +WithProperties = properties.WithProperties + +class ConfigureBuild(buildstep.BuildStep): + name = "configure build" + description = ["configuring build"] + descriptionDone = ["configured build"] + def __init__(self, platform, configuration, architecture, buildOnly, *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.addFactoryArguments(platform=platform, configuration=configuration, architecture=architecture, buildOnly=buildOnly) + + 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.finished(SUCCESS) + return defer.succeed(None) + + +class CheckOutSource(source.SVN): + baseURL = "http://svn.webkit.org/repository/webkit/" + mode = "update" + def __init__(self, *args, **kwargs): + source.SVN.__init__(self, baseURL=self.baseURL, defaultBranch="trunk", mode=self.mode, *args, **kwargs) + + +class InstallWin32Dependencies(shell.Compile): + description = ["installing dependencies"] + descriptionDone = ["installed dependencies"] + command = ["perl", "./WebKitTools/Scripts/update-webkit-auxiliary-libs"] + + +def appendCustomBuildFlags(step, platform): + if platform in ('gtk', 'wx', 'qt'): + step.setCommand(step.command + ['--' + platform]) + + +class CompileWebKit(shell.Compile): + command = ["perl", "./WebKitTools/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') + if platform == 'mac' and buildOnly: + self.setCommand(self.command + ['DEBUG_INFORMATION_FORMAT=dwarf-with-dsym']) + + appendCustomBuildFlags(self, platform) + return shell.Compile.start(self) + + +class ArchiveBuiltProduct(shell.ShellCommand): + command = ["python", "./WebKitTools/BuildSlaveSupport/built-product-archive", + WithProperties("--platform=%(platform)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", "./WebKitTools/BuildSlaveSupport/built-product-archive", + WithProperties("--platform=%(platform)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): + transfer.FileUpload.__init__(self, self.slavesrc, self.masterdest) + + +class DownloadBuiltProduct(transfer.FileDownload): + slavedest = WithProperties("WebKitBuild/%(configuration)s.zip") + mastersrc = WithProperties("archives/%(fullPlatform)s-%(architecture)s-%(configuration)s/%(got_revision)s.zip") + haltOnFailure = True + + def __init__(self): + transfer.FileDownload.__init__(self, self.mastersrc, self.slavedest) + + +class RunJavaScriptCoreTests(shell.Test): + name = "jscore-test" + description = ["jscore-tests running"] + descriptionDone = ["jscore-tests"] + command = ["perl", "./WebKitTools/Scripts/run-javascriptcore-tests", WithProperties("--%(configuration)s")] + logfiles = {'results': 'JavaScriptCore/tests/mozilla/actual.html'} + + def __init__(self, skipBuild=False, *args, **kwargs): + self.skipBuild = skipBuild + shell.Test.__init__(self, *args, **kwargs) + self.addFactoryArguments(skipBuild=skipBuild) + + def start(self): + appendCustomBuildFlags(self, self.getProperty('platform')) + if self.skipBuild: + self.setCommand(self.command + ['--skip-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 + + 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", "./WebKitTools/Scripts/run-webkit-tests", "--no-launch-safari", "--no-new-test-results", + "--no-sample-on-timeout", "--results-directory", "layout-test-results", "--use-remote-links-to-tests", + WithProperties("--%(configuration)s")] + + def __init__(self, skipBuild=False, *args, **kwargs): + self.skipBuild = skipBuild + shell.Test.__init__(self, *args, **kwargs) + self.addFactoryArguments(skipBuild=skipBuild) + + def start(self): + appendCustomBuildFlags(self, self.getProperty('platform')) + if self.skipBuild: + self.setCommand(self.command + ['--root=WebKitBuild/bin']) + return shell.Test.start(self) + + def commandComplete(self, cmd): + shell.Test.commandComplete(self, cmd) + + logText = cmd.logs['stdio'].getText() + 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) + + self.incorrectLayoutLines = incorrectLayoutLines + + def evaluateCommand(self, cmd): + if self.incorrectLayoutLines: + if len(self.incorrectLayoutLines) == 1 and (self.incorrectLayoutLines[0].find('were new') >= 0 or self.incorrectLayoutLines[0].find('was new') >= 0): + return WARNINGS + + 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.incorrectLayoutLines: + return self.incorrectLayoutLines + + return [self.name] + + +class ArchiveTestResults(shell.ShellCommand): + command = ["python", "./WebKitTools/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): + transfer.FileUpload.__init__(self, self.slavesrc, self.masterdest) + + +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)") + + def __init__(self): + master.MasterShellCommand.__init__(self, "") + + def start(self): + self.command = ["ditto", "-k", "-x", "-V", self.build.getProperties().render(self.zipFile), self.build.getProperties().render(self.resultDirectory)] + return master.MasterShellCommand.start(self) + + def finished(self, result): + url = self.build.getProperties().render(self.resultDirectory).replace("public_html/", "") + self.addURL("view results", url) + result = master.MasterShellCommand.finished(self, result) + self.step_status.setText(["uploaded results"]) + return result + + +class Factory(factory.BuildFactory): + def __init__(self, platform, configuration, architectures, buildOnly): + factory.BuildFactory.__init__(self) + self.addStep(ConfigureBuild, platform=platform, configuration=configuration, architecture=" ".join(architectures), buildOnly=buildOnly) + self.addStep(CheckOutSource) + if platform == "win": + self.addStep(InstallWin32Dependencies) + +class BuildFactory(Factory): + def __init__(self, platform, configuration, architectures, triggers): + Factory.__init__(self, platform, configuration, architectures, True) + self.addStep(CompileWebKit) + self.addStep(ArchiveBuiltProduct) + self.addStep(UploadBuiltProduct) + self.addStep(trigger.Trigger, schedulerNames=triggers) + +class TestFactory(Factory): + def __init__(self, platform, configuration, architectures): + Factory.__init__(self, platform, configuration, architectures, False) + self.addStep(DownloadBuiltProduct) + self.addStep(ExtractBuiltProduct) + self.addStep(RunJavaScriptCoreTests, skipBuild=True) + self.addStep(RunWebKitTests, skipBuild=(platform == 'win')) + self.addStep(ArchiveTestResults) + self.addStep(UploadTestResults) + self.addStep(ExtractTestResults) + +class BuildAndTestFactory(Factory): + def __init__(self, platform, configuration, architectures): + Factory.__init__(self, platform, configuration, architectures, False) + self.addStep(CompileWebKit) + self.addStep(RunJavaScriptCoreTests) + self.addStep(RunWebKitTests) + self.addStep(ArchiveTestResults) + self.addStep(UploadTestResults) + self.addStep(ExtractTestResults) + + +def loadBuilderConfig(c): + passwords = simplejson.load(open('passwords.json')) + + config = simplejson.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']: + kls = globals()[scheduler.pop('type')] + c['schedulers'].append(kls(**scheduler)) + + 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 + + factory = globals()["%sFactory" % builder.pop('type')] + factoryArgs = [] + for key in "platform", "configuration", "architectures", "triggers": + value = builder.pop(key, None) + if value: + factoryArgs.append(value) + + builder["factory"] = factory(*factoryArgs) + + c['builders'].append(builder) + +loadBuilderConfig(c) + +c['change_source'] = PBChangeSource() -c['slaves'] = webkit.auth.getSlaveAuthenticationDetails() -c['change_source'] = [PBChangeSource()] -c['builders'] = webkit.builders.getBuilders() -c['schedulers'] = webkit.schedulers.getSchedulers(c['builders']) -c['status'] = webkit.status.getStatusListeners() +c['status'] = [] +c['status'].append(html.WebStatus(http_port=8710, allowForce=True)) -c['slavePortnum'] = 9989 +c['slavePortnum'] = 17000 c['projectName'] = "WebKit" -c['projectURL'] = "http://webkit.org/" +c['projectURL'] = "http://webkit.org" c['buildbotURL'] = "http://build.webkit.org/" diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/buildbot.css index 534de25..534de25 100644 --- a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/buildbot.css +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/buildbot.css diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html new file mode 100644 index 0000000..23e6650 --- /dev/null +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/index.html @@ -0,0 +1,32 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15"> +<title>Welcome to the Buildbot</title> +</head> + +<body> +<h1>Welcome to the Buildbot!</h1> + +<ul> + <li>the <a href="waterfall">Waterfall Display</a> will give you a + time-oriented summary of recent buildbot activity.</li> + + <li>the <a href="grid">Grid Display</a> will give you a + developer-oriented summary of recent buildbot activity.</li> + + <li>The <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="changes">ChangeSource</a> information.</li> + + <br /> + <li><a href="about">About this Buildbot</a></li> +</ul> + + +</body> </html> diff --git a/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt new file mode 100644 index 0000000..47a9d27 --- /dev/null +++ b/WebKitTools/BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt @@ -0,0 +1,9 @@ +User-agent: * +Disallow: /waterfall +Disallow: /builders +Disallow: /changes +Disallow: /buildslaves +Disallow: /schedulers +Disallow: /one_line_per_build +Disallow: /one_box_per_builder +Disallow: /xmlrpc diff --git a/WebKitTools/BuildSlaveSupport/built-product-archive b/WebKitTools/BuildSlaveSupport/built-product-archive new file mode 100644 index 0000000..ca43dad --- /dev/null +++ b/WebKitTools/BuildSlaveSupport/built-product-archive @@ -0,0 +1,118 @@ +#!/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 + +buildDirectory = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "WebKitBuild")) + +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', 'extract'): + parser.error("Action is required") + + if action == 'archive': + archiveBuiltProduct(options.configuration, options.platform) + else: + extractBuiltProduct(options.configuration, options.platform) + + +def archiveBuiltProduct(configuration, platform): + assert platform in ('mac', 'win') + + archiveFile = os.path.join(buildDirectory, configuration + ".zip") + + try: + os.unlink(archiveFile) + except OSError, e: + if e.errno != 2: + raise + + if platform == 'mac': + configurationBuildDirectory = os.path.join(buildDirectory, configuration.title()) + return subprocess.call(["ditto", "-c", "-k", "--keepParent", "--sequesterRsrc", configurationBuildDirectory, archiveFile]) + elif platform == 'win': + binDirectory = os.path.join(buildDirectory, "bin") + thinDirectory = os.path.join(buildDirectory, "thin") + thinBinDirectory = os.path.join(thinDirectory, "bin") + + if os.path.isdir(thinDirectory): + shutil.rmtree(thinDirectory) + os.mkdir(thinDirectory) + + if subprocess.call(["cp", "-R", binDirectory, thinBinDirectory]): + return 1 + + if subprocess.call("rm -f %s" % os.path.join(thinBinDirectory, "*.ilk"), shell=True): + return 1 + + if subprocess.call(["zip", "-r", archiveFile, "bin"], cwd=thinDirectory): + return 1 + + shutil.rmtree(thinDirectory) + +def extractBuiltProduct(configuration, platform): + assert platform in ('mac', 'win') + + archiveFile = os.path.join(buildDirectory, configuration + ".zip") + + if platform == 'mac': + configurationBuildDirectory = os.path.join(buildDirectory, configuration.title()) + + if os.path.isdir(configurationBuildDirectory): + shutil.rmtree(configurationBuildDirectory) + + if subprocess.call(["ditto", "-x", "-k", archiveFile, buildDirectory]): + return 1 + os.unlink(archiveFile) + + elif platform == 'win': + binDirectory = os.path.join(buildDirectory, "bin") + if os.path.isdir(binDirectory): + shutil.rmtree(binDirectory) + + os.mkdir(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 + + if subprocess.call(["unzip", "-o", archiveFile], cwd=buildDirectory): + return 1 + + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/WebKitTools/BuildSlaveSupport/test-result-archive b/WebKitTools/BuildSlaveSupport/test-result-archive new file mode 100644 index 0000000..3b019c0 --- /dev/null +++ b/WebKitTools/BuildSlaveSupport/test-result-archive @@ -0,0 +1,86 @@ +#!/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__), "..", "..")) +layoutTestResultsDir = os.path.abspath(os.path.join(sourceRootDirectory, "layout-test-results")) +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") + + return archiveTestResults(options.configuration, options.platform) + +def archiveTestResults(configuration, platform): + assert platform in ('mac', 'win', 'gtk', 'qt') + + 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', 'gtk', 'qt'): + 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. + if e.errno != 90: + raise + +if __name__ == '__main__': + sys.exit(main()) diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog index 3cd309e..93d94cd 100644 --- a/WebKitTools/ChangeLog +++ b/WebKitTools/ChangeLog @@ -1,23208 +1,3869 @@ -2009-03-26 Darin Adler <darin@apple.com> +2009-08-11 Dmitry Titov <dimich@chromium.org> - 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. + Reviewed by NOBODY (build fix). - * 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. + 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: - (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. + (main): see above. - * 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. +2009-08-10 Steve Falkenburg <sfalken@apple.com> - Make build-jsc build testapi and minidom in addition to jsc itself. + Windows nightly fix. - * Scripts/build-jsc: + Reviewed by Ada Chan. -2009-03-20 Anders Carlsson <andersca@apple.com> + * FindSafari/FindSafari.cpp: + (_tmain): Copy Safari.dll if it exists. - Reviewed by Darin Adler. +2009-08-10 David Levin <levin@chromium.org> - Only release the result NPVariant if the call to NPN_Invoke was successful. - - * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: - (testNPRuntime): + Reviewed by David Kilzer. -2009-03-19 Gustavo Noronha Silva <gns@gnome.org> + check-webkit-style doesn't catch braces around single line statements when followed by else. + https://bugs.webkit.org/show_bug.cgi?id=28164 - Reviewed by Mark Rowe. + * 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. - Make determinePassedArchitecture always consume the --32-bit - option, also in non-AppleMacWebkit platforms. Solution pointed out - by Mark Rowe. +2009-08-10 David Kilzer <ddkilzer@apple.com> - * Scripts/webkitdirs.pm: + <http://webkit.org/b/28163> bugzilla-tool: scm module should not import bugzilla module -2009-03-19 Mark Rowe <mrowe@apple.com> + Reviewed by David Levin. - Reviewed by Oliver Hunt. + * 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. - Work around <rdar://problem/6698023> by activating fonts from disk. +2009-08-10 Peter Kasting <pkasting@google.com> - * 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. + Reviewed by David Kilzer. -2009-03-18 Mark Rowe <mrowe@apple.com> + https://bugs.webkit.org/show_bug.cgi?id=18599 + Work around apparent bug in abs2rel() with symlinked directories. - Reviewed by Dan Bernstein. + * Scripts/resolve-ChangeLogs: - <rdar://problem/6693300> Don't rely on printf from TestNetscapePlugIn appearing in test results +2009-08-10 Dan Bernstein <mitz@apple.com> - 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. + Build fix * 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> + (NPP_New): - resolve-ChangeLogs should not die on unmerged non-ChangeLog files +2009-08-10 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 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. + Allow TestNetscapePlugIn to fall back to the Carbon event model - 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. + 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. - Instead, just zero out the member variable in invalidate. + Now the plugin uses carbon either if it's forced, or if the Cocoa + event model is not supported. - * 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. + 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: - (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: + (NPP_New): -2009-03-02 Adam Treat <adam.treat@torchmobile.com> +2009-08-08 Adam Barth <abarth@webkit.org> 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: + bugzilla-tool needs a --quiet option + https://bugs.webkit.org/show_bug.cgi?id=28060 -2009-03-02 Adam Roben <aroben@apple.com> + 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. - Windows build fix after r41349 + * Scripts/bugzilla-tool: - * DumpRenderTree/win/AccessibilityUIElementWin.cpp: - (AccessibilityUIElement::getChildrenWithRange): +2009-08-08 Jan Michael Alonzo <jmalonzo@webkit.org> -2009-03-01 Chris Fleizach <cfleizach@apple.com> + Reviewed by Xan Lopez. - Reviewed by Oliver Hunt. + [Gtk] Enable accessibility in Gtk DRT + https://bugs.webkit.org/show_bug.cgi?id=25989 - 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. + Add Accessibility support to the GTK DRT. * DumpRenderTree/AccessibilityUIElement.h: - * DumpRenderTree/mac/AccessibilityUIElementMac.mm: + * 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): - * 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. - + (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: - (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 + (webViewWindowObjectCleared): + (main): + * GNUmakefile.am: - 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-08-07 Jan Michael Alonzo <jmalonzo@webkit.org> -2009-02-25 Adam Treat <adam.treat@torchmobile.com> + Unreviewed Gtk build fix. - Reviewed by Alexey Proskuryakov. + DRT needs internal WTF symbols so we link to libJavaScriptCore.la + too. Also don't force Gtk to use USE_SYSTEM_MALLOC. - 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. + * GNUmakefile.am: - * DumpRenderTree/qt/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::DumpRenderTree): - (WebCore::DumpRenderTree::open): +2009-08-07 Darin Adler <darin@apple.com> -2009-02-25 Simon Fraser <simon.fraser@apple.com> + * Scripts/commit-log-editor: Fix unchecked access to environment + variable that may not be there. - Reviewed by Dan Bernstein +2009-08-07 Mark Rowe <mrowe@apple.com> - https://bugs.webkit.org/show_bug.cgi?id=23854 + Handle the case where only a single test is missing results. - 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(). + * BuildSlaveSupport/build.webkit.org-config/master.cfg: - * 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-08-07 George Wright <george.wright@torchmobile.com> -2009-02-25 Adam Treat <adam.treat@torchmobile.com> + Reviewed by Adam Treat - Reviewed by Zack Rusin. + 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=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. + https://bugs.webkit.org/show_bug.cgi?id=28077 * 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> +2009-08-07 Pierre d'Herbemont <pdherbemont@apple.com> - Reviewed by Alexey Proskuryakov. + Reviewed by Eric Seidel. - 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. + commit-log-editor does not produce a git commit log that is git friendly. + https://bugs.webkit.org/show_bug.cgi?id=27754 - * Scripts/run-webkit-tests: + 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. -2009-02-24 Adam Treat <adam.treat@torchmobile.com> + * Scripts/commit-log-editor: - Reviewed by Cameron Zwarich. +2009-08-07 Adam Barth <abarth@webkit.org> - The Qt port does not support these yet nor does the nm check work with - QMake based build. + Unreviewed. (Darin Adler indicated he'd prefer if we landed these + kinds of changes unreviewed, like editing the WebKit Team wiki page.) - * Scripts/webkitdirs.pm: + Added Pierre d'Herbemont to list of committers. -2009-02-24 Jan Michael Alonzo <jmalonzo@webkit.org> + * Scripts/modules/committers.py: - Reviewed by Alexey Proskuryakov. +2009-08-07 Shinichiro Hamaji <hamaji@chromium.org> - [Gtk] add options for 3D transforms and HTML5 channel messaging to the build - https://bugs.webkit.org/show_bug.cgi?id=24072 + Reviewed by Adele Peterson. - Allow toggling of 3D transforms and HTML5 channel messaging - support for the Autotools (Gtk) build. + Cannot scroll for box-reflect:right + https://bugs.webkit.org/show_bug.cgi?id=27979 - Also add '--gtk' in the build-webkit help doc and fix autotools - option for web-workers support. + Update m_overflowLeft an m_overflowWidth for reflection just like + m_overflowTop and m_overflowHeight. - * Scripts/build-webkit: + * Scripts/make-js-test-wrappers: Added regexp to skip box-shadow-overflo +w-scroll.js -2009-02-23 Xan Lopez <xan@gnome.org> +2009-08-06 Shinichiro Hamaji <hamaji@chromium.org> - Reviewed by Alexey Proskuryakov. + Reviewed by Adam Barth. - https://bugs.webkit.org/show_bug.cgi?id=22624 - [SOUP][GTK] Need API to get SoupSession from WebKit. + box-shadow's spread is ignored with <table> + https://bugs.webkit.org/show_bug.cgi?id=28017 - Add soup flags now that dependency is explicit. + Use RenderStyle::getBoxShadowExtent just like RenderBlock. - * GNUmakefile.am: + * Scripts/make-js-test-wrappers: Added regexp to skip box-shadow-overflow-scroll.js -2009-02-22 Mark Rowe <mrowe@apple.com> +2009-08-06 Eric Seidel <eric@webkit.org> - Reviewed by Oliver Hunt. + No review, only changing make-js-test-wrappers. - 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. + Fix make-js-test-wrappers to ignore a few more js tests + with custom templates. * 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. +2009-08-06 Chris Marrin <cmarrin@apple.com> - * Scripts/webkitdirs.pm: - -2009-02-12 Simon Fraser <simon.fraser@apple.com> + Reviewed by David Hyatt. - 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. + Added ENABLE_3D_CANVAS flag to build, default to off * 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> +2009-08-05 Brady Eidson <beidson@apple.com> Reviewed by Darin Adler. - Print warning regarding display color profile change in run-webkit-tests instead of DRT. + Win DRT's resource load delegate is missing didReceiveResponse + https://bugs.webkit.org/show_bug.cgi?id=28033 - https://bugs.webkit.org/show_bug.cgi?id=23392 + * DumpRenderTree/win/FrameLoadDelegate.cpp: + Added: + (FrameLoadDelegate::didReceiveServerRedirectForProvisionalLoadForFrame): + (FrameLoadDelegate::willPerformClientRedirectToURL): + (FrameLoadDelegate::didCancelClientRedirectForFrame): - * DumpRenderTree/mac/PixelDumpSupportMac.mm: - (setupMainDisplayColorProfile): - * Scripts/run-webkit-tests: + Minor style cleanup: + (FrameLoadDelegate::didStartProvisionalLoadForFrame): + (FrameLoadDelegate::didReceiveTitle): + (FrameLoadDelegate::didFinishLoadForFrame): + (FrameLoadDelegate::willCloseFrame): + (FrameLoadDelegate::didClearWindowObject): + * DumpRenderTree/win/FrameLoadDelegate.h: -2009-01-20 Pierre-Olivier Latour <pol@apple.com> +2009-08-05 Brady Eidson <beidson@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: + Win DRT's resource load delegate is missing didReceiveResponse + https://bugs.webkit.org/show_bug.cgi?id=28033 -2009-01-19 Sam Weinig <sam@webkit.org> - - * Scripts/do-webcore-rename: Add JSValuePtr and ProtectedJSValuePtr. + * DumpRenderTree/win/ResourceLoadDelegate.cpp: + (ResourceLoadDelegate::didReceiveResponse): + * DumpRenderTree/win/ResourceLoadDelegate.h: -2009-01-16 Gabor Loki <loki@inf.u-szeged.hu> +2009-08-05 Darin Fisher <darin@chromium.org> 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. + Add layoutTestController.dumpWillCacheResponse + https://bugs.webkit.org/show_bug.cgi?id=28010 - * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp: - (testEnumerate): + 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. -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. + The test that was specifically verifying willCacheResponse now calls + dumpWillCacheResponse. -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.cpp: Add dumpWillCacheResponse + (LayoutTestController::LayoutTestController): + (dumpWillCacheResponseCallback): + (LayoutTestController::staticFunctions): * 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> + (LayoutTestController::dumpWillCacheResponse): + (LayoutTestController::setDumpWillCacheResponse): + * DumpRenderTree/mac/ResourceLoadDelegate.mm: Inspect dumpWillCacheResponse + instead of dumpResourceLoadCallbacks. + (-[ResourceLoadDelegate webView:resource:willCacheResponse:fromDataSource:]): - * Scripts/make-js-test-wrappers: Updated so it won't overwrite tests in the svg/dom - directory that aren't using standard wrappers. +2009-08-05 Jeremy Orlow <jorlow@chromium.org> -2009-01-11 Robert Blaut <webkit@blaut.biz> + Reviewed by Adam Barth. - Reviewed by Eric Seidel. + Add my name to committers.py + https://bugs.webkit.org/show_bug.cgi?id=28013 - <https://bugs.webkit.org/show_bug.cgi?id=23134> - Update bisect-builds for Safari 3.2 to prevent crashes + Add my name to committers.py. - * Scripts/bisect-builds: Added Safari 3.2 and the corresponding minimal revision, r37348. + * Scripts/modules/committers.py: -2009-01-08 Adam Treat <adam.treat@torchmobile.com> +2009-08-05 Kenneth Rohde Christiansen <kenneth@webkit.org> Reviewed by Simon Hausmann. - Explicitly set these so that the layout tests do not break. + A minor refactoring of the Qt DRT to be a bit more similar to + the other DRTs, as well as more understandable. - * DumpRenderTree/qt/DumpRenderTree.cpp: - (WebCore::WebPage::WebPage): - -2009-01-07 Glenn Wilson <gwilson@chromium.org> - - Reviewed by Eric Seidel. + Splitting up resetJSObjects into a LayoutTestController->reset() + plus a new closeRemainingWindows() method. - 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 + 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::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> + (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting): + (WebCore::DumpRenderTree::open): + (WebCore::DumpRenderTree::closeRemainingWindows): + * DumpRenderTree/qt/DumpRenderTree.h: - * Scripts/make-js-test-wrappers: Added another exception to avoid overwriting - a custom-written test. +2009-08-05 Kenneth Rohde Christiansen <kenneth@webkit.org> -2008-12-15 Simon Hausmann <hausmann@webkit.org> + Reviewed by Simon Hausmann. - Reviewed by Holger Freyther. + Make the Qt DRT WorkQueue work similarily to the cross platform + one. This means that all items return true if they started + loading. - Implement setJavaScriptProfilingEnabled in the Qt DRT to pass fast/profiler. + 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: - (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. + (LoadItem::invoke): + (ReloadItem::invoke): + (ScriptItem::invoke): + (BackForwardItem::invoke): + (LayoutTestController::processWork): + (LayoutTestController::maybeDump): -2008-12-12 Holger Hans Peter Freyther <zecke@selfish.org> +2009-08-04 Kenneth Rohde Christiansen <kenneth@webkit.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> + If load of a test fails, don't dump as it will be dumped + in the preceding test, resulting in a invalid incorrect layout. - * 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: + * DumpRenderTree/qt/jsobjects.cpp: + (LayoutTestController::maybeDump): -2008-11-14 Krishna <krishnamurty.podipireddy@nokia.com> +2009-08-04 Kenneth Rohde Christiansen <kenneth@webkit.org> Reviewed by Simon Hausmann. - Fix hanging DRT with Qt. + Make the Qt DumpRenderTree more similar to the mac one. - https://bugs.webkit.org/show_bug.cgi?id=22209 + 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): - 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. +2009-08-05 chris fleizach <cfleizach@apple.com> - Apparently older versions of gcc have issues with this patch. - Backing out a second time until the issues are resolved. + Fix Tiger build breakage. -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> +2009-08-04 Chris Fleizach <cfleizach@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. + Bug 27994 - WAI-ARIA: aria-valuetext needs to be implemented + https://bugs.webkit.org/show_bug.cgi?id=27994 - https://bugs.webkit.org/show_bug.cgi?id=16299 - Add a config.h file to DRT + Expose valueDescription for accessibility. - 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): + (getValueDescriptionCallback): (AccessibilityUIElement::getJSClass): * DumpRenderTree/AccessibilityUIElement.h: * DumpRenderTree/mac/AccessibilityUIElementMac.mm: - (AccessibilityUIElement::getDocumentLinks): - (AccessibilityUIElement::attributesOfDocumentLinks): + (AccessibilityUIElement::valueDescription): * 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. + (AccessibilityUIElement::valueDescription): - https://bugs.webkit.org/show_bug.cgi?id=21483 +2009-08-04 Eric Seidel <eric@webkit.org> - * 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): + Reviewed by Mark Rowe. -2008-09-26 Kevin Ollivier <kevino@theolliviers.com> + REGRESSION: run-webkit-tests crashes if you have non-system perl in PATH + https://bugs.webkit.org/show_bug.cgi?id=28006 - wx build fix. Update the version of libpng. + Hard-code perl to /usr/bin/perl and swig to /usr/bin/swig - * wx/install-unix-extras: + * DumpRenderTree/mac/PerlSupport/Makefile: -2008-09-24 Sam Weinig <sam@webkit.org> +2009-08-04 Adam Barth <abarth@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> + Add pkasting to bugzilla-tool as a committer + https://bugs.webkit.org/show_bug.cgi?id=28002 - Adding a stand-alone Windows console application to record a process's memory usage + * Scripts/modules/committers.py: - 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> +2009-08-04 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): + Bug 27993 - AXSliders are missing required attributes and actions + https://bugs.webkit.org/show_bug.cgi?id=27993 -2008-09-19 Chris Fleizach <cfleizach@apple.com> + Add ability to check if any arbitrary action is supported. - 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): + (isActionSupportedCallback): (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 === + (AccessibilityUIElement::isActionSupported): + * DumpRenderTree/win/AccessibilityUIElementWin.cpp: + (AccessibilityUIElement::isActionSupported): -2008-09-04 Mark Rowe <mrowe@apple.com> +2009-08-04 Adam Barth <abarth@webkit.org> 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 + bugzilla-tool unit tests need a test harness + https://bugs.webkit.org/show_bug.cgi?id=27977 - * Scripts/build-webkit: Remove ENABLE_DASHBOARD_SUPPORT-related code. + * Scripts/run-webkit-unittests: Added. -2008-09-04 Cameron Zwarich <cwzwarich@uwaterloo.ca> +2009-08-04 Mark Rowe <mrowe@apple.com> - Reviewed by Oliver Hunt. + Rubber-stamped by Gavin "Gavvy" Barraclough. - Bug 20616: Incorporate V8 benchmarks in testing - <https://bugs.webkit.org/show_bug.cgi?id=20616> + 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. - Add support for the --v8 option to run-sunspider. + * DumpRenderTree/mac/PerlSupport/Makefile: - * Scripts/run-sunspider: +2009-08-04 Eric Seidel <eric@webkit.org> -2008-09-04 Kevin Ollivier <kevino@theolliviers.com> + Reviewed by Adam Barth. - wx buildbot fix. More robust handling of clean when makefiles are not built or - are not completely made. + bugzilla-tool needs unit tests + https://bugs.webkit.org/show_bug.cgi?id=26916 - * wx/build-wxwebkit: + Add some basic unit testing for scm.py. -2008-09-03 Mark Rowe <mrowe@apple.com> + * Scripts/modules/scm.py: + * Scripts/modules/scm_unittest.py: Added. - More Mac build fixes. +2009-08-04 Mike Fenton <mike.fenton@torchmobile.com> - 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. + Reviewed by Adam Treat. - * 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: + 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). -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. + https://bugs.webkit.org/show_bug.cgi?id=27893 * 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 +2009-08-03 Chris Fleizach <cfleizach@apple.com> - Make build-launcher-app work when run from a git repository. - https://bugs.webkit.org/show_bug.cgi?id=20478 + Reviewed by Jon Honeycutt. - * BuildSlaveSupport/build-launcher-app: + Bug 27958 - WAI-ARIA: Implement 'aria-required' attribute. + https://bugs.webkit.org/show_bug.cgi?id=27958 -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 + Exposed isRequired to DumpRenderTree for accessibility. * DumpRenderTree/AccessibilityUIElement.cpp: - (attributesOfColumnHeadersCallback): - (attributesOfRowHeadersCallback): - (attributesOfColumnsCallback): - (attributesOfRowsCallback): - (attributesOfVisibleCellsCallback): - (attributesOfHeaderCallback): - (indexInTableCallback): - (rowIndexRangeCallback): - (columnIndexRangeCallback): - (childAtIndexCallback): - (cellForColumnAndRowCallback): + (getIsRequiredCallback): (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> + (AccessibilityUIElement::isRequired): + * DumpRenderTree/win/AccessibilityUIElementWin.cpp: + (AccessibilityUIElement::isRequired): - Rubber-stamped by Geoff Garen. +2009-08-04 Adam Barth <abarth@webkit.org> - <rdar://problem/6139914> Please include a _debug version of JavaScriptCore framework + Reviewed by Eric Seidel. - * Scripts/check-for-global-initializers: Ignore initializers when building the debug variant. + bugzilla-tool --commit-queue should validate commit-queue setter is a committer + https://bugs.webkit.org/show_bug.cgi?id=27974 -2008-08-13 Simon Hausmann <hausmann@webkit.org> + With a test! - Rubber-stamped by Holger. + * Scripts/modules/bugzilla.py: + * Scripts/modules/bugzilla_unittest.py: - Revert r31585 and disable http tests for the Qt build again unless - explicitly enabled. +2009-08-04 Eric Seidel <eric@webkit.org> - 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. + Reviewed by Adam Barth. - * Scripts/run-webkit-tests: + REGRESSION(r46700): bugzilla-tool land-diff double-spaces ChangeLogs + https://bugs.webkit.org/show_bug.cgi?id=27973 -2008-08-10 Jan Michael Alonzo <jmalonzo@webkit.org> + The trailing comma (suppresses newlines) was lost in r46700. - Reviewed (and updated) by Alp Toker. + * Scripts/bugzilla-tool: - https://bugs.webkit.org/show_bug.cgi?id=16620 - [GTK] Autotools make dist and make check support +2009-08-04 Adam Barth <abarth@webkit.org> - Get make dist working. + Reviewed by Eric Seidel. - Note that not all possible configurations have been tested yet. + bugzilla-tool has too many fatal errors + https://bugs.webkit.org/show_bug.cgi?id=27969 - * GNUmakefile.am: + Replace several fatal errors with ScriptError exceptions. -2008-08-10 Alp Toker <alp@nuanti.com> + * Scripts/bugzilla-tool: + * Scripts/modules/bugzilla.py: + * Scripts/modules/scm.py: - Remove leftover qmake/GTK+ build files. +2009-08-04 Eric Seidel <eric@webkit.org> - * DumpRenderTree/gtk/DumpRenderTree.pro: Removed. - * GtkLauncher/GtkLauncher.pro: Removed. + No review, ChangeLog fix only. -2008-08-06 Chris Fleizach <cfleizach@apple.com> + Fix a ChangeLog line-spacing disaster caused by: + https://bugs.webkit.org/show_bug.cgi?id=27973 - Reviewed by Beth Dakin + Still unsure what the fix for bugzilla-tool will be. - AX functions shouldn't return position information because it changes - based on the platform +2009-08-04 Adam Barth <abarth@webkit.org> - * DumpRenderTree/mac/AccessibilityUIElementMac.mm: - (AccessibilityUIElement::boundsForRange): + Reviewed by Eric Seidel. -2008-08-06 Eric Seidel <eric@webkit.org> + bugzilla-tool --commit-queue should only land commit-queue+ patches + https://bugs.webkit.org/show_bug.cgi?id=27970 - Reviewed by darin. + commit-queue mode for bugzilla-tool + https://bugs.webkit.org/show_bug.cgi?id=27918 - Fix leaks seen on build-bot by fixing memory management of AccessibilityUIElement. - <https://bugs.webkit.org/show_bug.cgi?id=20297> - <rdar://problem/6093153> + 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. - 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. :) + * Scripts/bugzilla-tool: - I also fixed a few typos, such as AccessibilityUIElement() instead of ~AccessibilityUIElement() - which was causing additional leaks. :) +2009-08-04 Eric Seidel <eric@webkit.org> - I added toAXElement to remove a bunch of copy/paste code. + Reviewed by Adam Barth. - * 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): + committer logic should be split out of bugzilla.py into its own module -2008-08-06 Eric Seidel <eric@webkit.org> + https://bugs.webkit.org/show_bug.cgi?id=27972 - Reviewed by Cameron Zwarich. + I also added unit tests for the functionality I added. - Speculative fix for an error I keep seeing in my Cygwin build + * Scripts/modules/bugzilla.py: + * Scripts/modules/bugzilla_unittest.py: Added. + * Scripts/modules/commiters_unittest.py: Added. + * Scripts/modules/committers.py: Added. - * Scripts/webkitdirs.pm: make determineConfigurationProductDir() always call determineConfiguration() even on cygwin +2009-08-03 Peter Kasting <pkasting@google.com> -2008-08-02 Kevin Ollivier <kevino@theolliviers.com> + Reviewed by David Kilzer. - Forgot to commit licensing correction in last commit. + 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. - * wx/packaging/wxWebKitInstaller.iss.in: + * Scripts/svn-apply: + * Scripts/svn-unapply: -2008-08-02 Kevin Ollivier <kevino@theolliviers.com> +2009-08-03 Adam Barth <abarth@webkit.org> 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. + bugzilla-tool land-patches needs --queue mode + https://bugs.webkit.org/show_bug.cgi?id=27961 - * 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" + Add a --commit-queue command line option to suppress user interaction. -2008-07-31 Adam Roben <aroben@apple.com> + * Scripts/bugzilla-tool: + * Scripts/modules/scm.py: - Windows build bot fix +2009-08-03 Mark Rowe <mrowe@apple.com> - * 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. + Build fix. Add installsrc, installhdrs and install targets. -2008-07-31 David Kilzer <ddkilzer@apple.com> + * DumpRenderTree/mac/PerlSupport/Makefile: - Fix layout test results for webarchive/test-xml-stylesheet.xml +2009-08-03 Eric Carlson <eric.carlson@apple.com> - 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 Eric Seidel. - Reviewed by Alice Liu + HTMLInputElement is not controllable by assistive technologies + https://bugs.webkit.org/show_bug.cgi?id=27941 - 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 + Accessibility control of a slider required adding increment() and decrement() + methods to AccessibilityObject, so expose thos methods on AccessibilityUIElement. * 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 + (incrementCallback): New, call UI element increment method. + (decrementCallback): New, call UI element decrement method. + (AccessibilityUIElement::getJSClass): Expose increment and decrement methods. - 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> + (AccessibilityUIElement::increment): New, send NSAccessibilityIncrementAction to Mac wrapper. + (AccessibilityUIElement::decrement): New, send NSAccessibilityDecrementAction to Mac wrapper. - 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 + * DumpRenderTree/win/AccessibilityUIElementWin.cpp: + (AccessibilityUIElement::increment): New, do nothing. + (AccessibilityUIElement::decrement): New, do nothing. - Add support to get attributes of the AXChildren of an objecty +2009-08-02 David D. Kilzer <ddkilzer@webkit.org> - * DumpRenderTree/AccessibilityController.cpp: - (attributesOfChildrenForFocusedElementCallback): - (AccessibilityController::staticFunctions): - * DumpRenderTree/AccessibilityController.h: - * DumpRenderTree/mac/AccessibilityControllerMac.mm: - (descriptionOfValue): - (AccessibilityController::attributesOfChildrenForFocusedElement): + <http://webkit.org/b/27930> bugzilla-tool hates Tor Arne Vestbø -2008-07-14 Steve Falkenburg <sfalken@apple.com> + Reviewed by Tor Arne Vestbø. - Build fix. + * Scripts/bugzilla-tool: + (set_reviewer_in_changelog): Made sure reviewer is properly + encoded when calling replace(). - * DumpRenderTree/win/DumpRenderTree.vcproj: +2009-08-02 Kevin Ollivier <kevino@theolliviers.com> -2008-07-14 Adam Roben <aroben@apple.com> + Reviewed by David Levin. - Attempted Windows build fix + Script for building the wxBrowser sample app for wx. + https://bugs.webkit.org/show_bug.cgi?id=27619 - * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: Add - CoreFoundation/OSXCompatibilityHeaders[/GNUCompatibility] to the - include path. + * wx/browser/wscript: Added. -2008-07-14 Alexey Proskuryakov <ap@webkit.org> +2009-08-02 Kevin Ollivier <kevino@theolliviers.com> - Reviewed by Geoff Garen. + Reviewed by Jan Alonzo. - Eliminate per-thread JavaScript global data instance support and make arbitrary - global data/global object combinations possible. + Scripts needed for the waf build. + https://bugs.webkit.org/show_bug.cgi?id=27619 - * 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. + * 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. -2008-07-11 Stephanie Lewis <slewis@apple.com> +2009-08-01 Dan Bernstein <mitz@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 + Make pixel test results more consistent across Mac OS X versions * DumpRenderTree/cg/ImageDiffCG.cpp: - (compareImages): - (main): - * DumpRenderTree/cg/PixelDumpSupportCG.cpp: - (printPNG): + (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: - (dump): - * Scripts/run-webkit-tests: - -2008-07-08 Jon Honeycutt <jhoneycutt@apple.com> - - Reviewed by Anders. + (createWebViewAndOffscreenWindow): Set the window’s color space to the + main screen’s color space, even though the window is off-screen. - Port r34988 to Mac: allow tests to define JavaScript to execute when - NPP_DestroyStream or NPP_URLNotify is called. +2009-08-01 Mark Rowe <mrowe@apple.com> - * 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): + Try again to make the Qt build bot happy. -2008-07-07 Steve Falkenburg <sfalken@apple.com> + * 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. - Fix build. +2009-08-01 Mark Rowe <mrowe@apple.com> - * DumpRenderTree/win/ImageDiff.vcproj: + Try and make the Qt build bot happy. -2008-07-02 Jon Honeycutt <jhoneycutt@apple.com> + * 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. - Allow tests to define JavaScript to execute when NPP_DestroyStream or - NPP_URLNotify is called. +2009-08-01 Mark Rowe <mrowe@apple.com> - 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. + Move the include of DumpRenderTreeSupport to after DumpRenderTree has been built. * 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> +2009-08-01 Mark Rowe <mrowe@apple.com> - Reviewed by Darin Adler. + Reviewed by Sam Weinig and David D. Kilzer. - Fix for <rdar://problem/5884881> Make DumpRenderTree support - accessibility tests + Fix <https://bugs.webkit.org/show_bug.cgi?id=27923>. + Bug 27923: run-webkit-tests should not invoke "ps" repeatedly on Mac OS X - This patch adds some basic support for accessibility layout tests - on the Mac. + 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/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: + * 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: - * Scripts/webkitdirs.pm: - -2008-05-22 Stephanie Lewis <slewis@apple.com> - Reviewed by Dan. +2009-08-01 Mark Rowe <mrowe@apple.com> - implement the beforeUnload UI delegate so that DRT will dispatch beforeunload events. + Reviewed by David D. Kilzer. - * DumpRenderTree/mac/UIDelegate.mm: - (-[UIDelegate webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:]): - * DumpRenderTree/win/UIDelegate.cpp: - (SearchableWebViewHost::runBeforeUnloadConfirmPanelWithMessage): + Display the reminder once rather than once per ChangeLog. -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/prepare-ChangeLog: - * Scripts/run-sunspider: +2009-08-01 David Kilzer <ddkilzer@apple.com> -=== Start merge of squirrelfish === + resolve-ChangeLogs: add error checking to git ls-files command on close() -2008-05-21 Darin Adler <darin@apple.com> + Reviewed by Eric Seidel. - * Scripts/make-js-test-wrappers: Added another exception. + Item 2 of <https://bugs.webkit.org/show_bug.cgi?id=18599#c0>. -2008-05-19 Stephanie Lewis <slewis@apple.com> + * 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 $!;". - Reviewed by Adam. +2009-08-01 David Kilzer <ddkilzer@apple.com> - Explicitly set run mode to 32bit unless overridden to avoid - confusion when running tests + <http://webkit.org/b/18599> resolve-ChangeLogs doesn't work with relative paths - * Scripts/build-dumprendertree: - * Scripts/gdb-safari: - * Scripts/run-webkit-tests: - * Scripts/webkitdirs.pm: + Reviewed by Eric Seidel. -2008-05-16 Stephanie Lewis <slewis@apple.com> + * 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. - Reviewed by Steve. +2009-08-01 David Kilzer <ddkilzer@apple.com> - Print out pending unload event count. Also print out main frame name to match Mac. + Implement VCSUtils::chdirReturningRelativePath() - * 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: + Reviewed by Eric Seidel. -2008-05-15 Stephanie Lewis <slewis@apple.com> + Step 2 to fix: + <http://webkit.org/b/18599> resolve-ChangeLogs doesn't work with relative paths - Reviewed by Anders. + * 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. - Dump the unload count for a frame after parsing is finished. +2009-08-01 David Kilzer <ddkilzer@apple.com> - * DumpRenderTree/mac/FrameLoadDelegate.mm: - (-[FrameLoadDelegate webView:didFinishDocumentLoadForFrame:]): + Implement VCSUtils::determineVCSRoot() -2008-05-15 Alexey Proskuryakov <ap@webkit.org> + Reviewed by Eric Seidel. - Reviewed by Dan Bernstein. + Step 1 to fix: + <http://webkit.org/b/18599> resolve-ChangeLogs doesn't work with relative paths - https://bugs.webkit.org/show_bug.cgi?id=10707 - DumpRenderTree should not be able to access non-local resources + * 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. - * DumpRenderTree/mac/ResourceLoadDelegate.mm: - (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]): - Block them, and complain. +2009-07-31 Daniel Bates <dbates@intudata.com> -2008-05-15 Kevin Ollivier <kevino@theolliviers.com> - - wx build fix. Update the version of libpng to download and instsall. + Reviewed by Eric Seidel. + + https://bugs.webkit.org/show_bug.cgi?id=27757 - * wx/install-unix-extras: + 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 -2008-05-14 Julien Chaffraix <jchaffraix@webkit.org> +2009-07-31 Laszlo Gombos <laszlo.1.gombos@nokia.com> - Reviewed by Eric. + Reviewed by Eric Seidel. - - isDarwin() and isCygwin() returned an empty string if the platform equality check fails. - We now force the return value to be numeric. + Add a top level build option to control datagrid support + https://bugs.webkit.org/show_bug.cgi?id=27915 - - Removed platform checks as it was a work around the previous issue. + * Scripts/build-webkit: - - Replaced isDarwin() by isOSX() as they have now the same behaviour. +2009-07-31 David Levin <levin@chromium.org> - * Scripts/build-webkit: - * Scripts/webkitdirs.pm: + Reviewed by Adam Treat. -2008-05-12 Adam Roben <aroben@apple.com> + check-webkit-style --git-commit has bugs if you select a commit in the past + https://bugs.webkit.org/show_bug.cgi?id=27908 - Support for testing NPN_PostURL + * 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. - Reviewed by Anders Carlsson. + (Git::create_patch_since_local_commit): + Added this command to allow doing a diff of everything after a given commit. - * 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. +2009-07-31 Jan Michael Alonzo <jmalonzo@webkit.org> -2008-05-12 Mark Rowe <mrowe@apple.com> + Speculative Qt build fix. Not reviewed. - Reviewed by Sam Weinig. + Add LayoutTestController::disableImageLoading() in jsobjects.h. - Minor cleanup of the DRT Xcode project. + * DumpRenderTree/qt/jsobjects.h: - * 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. +2009-07-31 Brady Eidson <beidson@apple.com> -2008-05-12 Anders Carlsson <andersca@apple.com> + Reviewed by John Sullivan. - Reviewed by Adam. + <rdar://problem/6973106> and https://bugs.webkit.org/show_bug.cgi?id=27896 + Favicons are still loaded when automatic image loading is disabled. - Add support for testing application caches. + * DumpRenderTree/LayoutTestController.cpp: + (disableImageLoadingCallback): + (LayoutTestController::staticFunctions): + * DumpRenderTree/LayoutTestController.h: * 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/mac/LayoutTestControllerMac.mm: + (LayoutTestController::disableImageLoading): * 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. + (resetWebViewToConsistentStateBeforeTesting): + * DumpRenderTree/win/LayoutTestControllerWin.cpp: + (LayoutTestController::disableImageLoading): - * DumpRenderTree/qt/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::DumpRenderTree): + * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: + (LayoutTestController::disableImageLoading): Stubbed for now. * DumpRenderTree/qt/jsobjects.cpp: + (LayoutTestController::disableImageLoading): Ditto. -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: +2009-07-30 Eric Seidel <eric@webkit.org> -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 + Reviewed by David Kilzer. - Similar to Editing and Frameloading we do the dumping within WebCore + 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. - * DumpRenderTree/qt/jsobjects.cpp: - (LayoutTestController::dumpResourceLoadCallbacks): - * DumpRenderTree/qt/jsobjects.h: + * Scripts/bugzilla-tool: + * Scripts/modules/scm.py: -2008-04-24 Jan Michael Alonzo <jmalonzo@unpluggable.com> +2009-07-30 Eric Seidel <eric@webkit.org> - Reviewed by Maciej Stachowiak. + Reviewed by David Levin. - http://bugs.webkit.org/show_bug.cgi?id=18485 - Typo and documentation fix for build-webkit + 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: -2008-04-24 Anders Carlsson <andersca@apple.com> +2009-07-31 David Kilzer <ddkilzer@apple.com> - Reviewed by Sam. + <http://webkit.org/b/27894> bugzilla-tool: Bugzilla.clear_attachment_review_flag() fails with ClientForm-0.2.10 and python-2.5 - Don't call fprintf from the signal handler. - - * DumpRenderTree/mac/DumpRenderTree.mm: - (crashHandler): + Reviewed by Eric Seidel. -2008-04-23 Adam Roben <aroben@apple.com> + * Scripts/modules/bugzilla.py: + (Bugzilla.clear_attachment_review_flag): Specify which 'comment' + form field to use when setting its value. - Make crashes be reported as crashes, not hangs +2009-07-31 Eric Seidel <eric@webkit.org> 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: + bugzilla-tool post-commits obsoletes its own work :( + https://bugs.webkit.org/show_bug.cgi?id=27849 -2008-04-18 Adam Roben <aroben@apple.com> + Simple fix. Use .add() instead of .update() - Get rid of DRT's Watchdog + * Scripts/bugzilla-tool: - 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 +2009-07-31 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 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> + Improve platform-detection in run-webkit-tests - Make the hang timer 60 seconds + This prevents miss-detection of mac-* over Qt/Mac. * 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. +2009-07-30 Mark Rowe <mrowe@apple.com> - * 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. + Reviewed by Cameron Zwarich. - * 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. + Teach buildbot to detect test cases that are missing results. -2008-04-17 Adam Roben <aroben@apple.com> + * BuildSlaveSupport/build.webkit.org-config/master.cfg: - Print the extension for all tests in the test results page +2009-07-30 Mark Rowe <mrowe@apple.com> - Reviewed by Eric Seidel. + Things work better when you create the correct directories. * Scripts/run-webkit-tests: -2008-04-17 Adam Roben <aroben@apple.com> +2009-07-30 Mark Rowe <mrowe@apple.com> - Move code that counts finished tests into a subroutine - - Reviewed by Eric Seidel. + Include some information about the error when we die. * Scripts/run-webkit-tests: - (sub countFinishedTest): Added. -2008-04-17 Adam Roben <aroben@apple.com> +2009-07-30 Mark Rowe <mrowe@apple.com> - Move code that handles a crash into a subroutine - - Reviewed by Eric Seidel. + Ensure that the path exists before writing results to it. + Hopefully this will make the Windows build bot happy. * 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 +2009-07-30 Mark Rowe <mrowe@apple.com> - 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. + Reviewed by Adam Treat and Jon Honeycutt. - 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. + 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: -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. +2009-07-30 Mark Rowe <mrowe@apple.com> + Add a Qt Linux build bot. - * 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. + * BuildSlaveSupport/build.webkit.org-config/config.json: +2009-07-30 Jakob Petsovits <jakob.petsovits@torchmobile.com> - * DumpRenderTree/qt/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::readStdin): - * DumpRenderTree/qt/main.cpp: - (main): + Reviewed by Adam Roben. -2008-04-03 Holger Hans Peter Freyther <holger.freyther@trolltech.com> + Add --minimal option to webkit-build. + https://bugs.webkit.org/show_bug.cgi?id=27852 - Reviewed by Simon. + This option disables all optional build features unless + they are explicitly enabled. - * 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. + * Scripts/build-webkit: +2009-07-30 Jakub Wieczorek <faw217@gmail.com> - * DumpRenderTree/LayoutTestController.cpp: - (setPrivateBrowsingEnabledCallback): + [Qt] Fix build with GCC 4.4. -2008-04-01 Christian Dywan <christian@imendio.com> + * DumpRenderTree/qt/ImageDiff.cpp: - Build fix for GCC 4.3. +2009-07-29 Ariya Hidayat <ariya.hidayat@nokia.com> - * DumpRenderTree/gtk/WorkQueueItemGtk.cpp: include string.h - -2008-04-01 Simon Hausmann <hausmann@webkit.org> + Reviewed by Simon Hausmann. - Reviewed by Holger. + https://bugs.webkit.org/show_bug.cgi?id=27813 - Fix Qt DRT run by also printing EOF on stderr, as expected by - run-webkit-tests. + [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): - -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/DumpRenderTree.h: * 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> +2009-07-29 Ariya Hidayat <ariya.hidayat@nokia.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. + Reviewed by Simon Hausmann. - * DumpRenderTree/mac/DumpRenderTree.mm: - (dumpRenderTree): + https://bugs.webkit.org/show_bug.cgi?id=27813 -2008-02-04 Mark Rowe <mrowe@apple.com> + [Qt] Implement ImageDiff. - Gtk qmake build fix. + * DumpRenderTree/qt/ImageDiff.cpp: Added. + * DumpRenderTree/qt/ImageDiff.pro: Added. - * Scripts/webkitdirs.pm: Fix perl's complaint about an odd number of elements in anonymous hash. +2009-07-30 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> -2008-02-04 Jan Michael Alonzo <jmalonzo@unpluggable.com> + Reviewed by Eric Seidel. - Reviewed by Alp Toker and Mark Rowe. + build-webkit: Reorder logic for determining the baseProductDir + + https://bugs.webkit.org/show_bug.cgi?id=27699 - http://bugs.webkit.org/show_bug.cgi?id=16618 - [GTK] build-webkit and run-webkit-tests autootools support + 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/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> +2009-07-29 David Kilzer <ddkilzer@apple.com> - Reviewed by Steve F. + <http://webkit.org/b/27082> bugzilla-tool: Add --no-close switch to land-patches - Partial fix for <rdar://5621244> Drag & Drop doesn't work correctly in DRT + Reviewed by David Levin. - 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 + * 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. - * DumpRenderTree/win/EventSender.cpp: - (leapForwardCallback): - (mouseDownCallback): - (doMouseUp): - (mouseUpCallback): - (doMouseMove): - (mouseMoveToCallback): - Minor updates to these functions to handle the different message queue structure. +2009-07-29 David Kilzer <ddkilzer@apple.com> - (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. + <http://webkit.org/b/27815> bugzilla-tool: add -m/--description to post-commits command - * DumpRenderTree/win/UIDelegate.cpp: - (UIDelegate::doDragDrop): - Call replaySavedEvents directly to force synchronous handling of drag and drop. + Reviewed by Eric Seidel. -2008-02-04 Rodney Dawes <dobey@wayofthemonkey.com> + * 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. - Reviewed by Alp Toker and Mark Rowe. +2009-07-29 Kenneth Rohde Christiansen <kenneth@webkit.org> - Fix http://bugs.webkit.org/show_bug.cgi?id=17175. - Bug 17175: Use of C++ compiler flags in CFLAGS + Reviewed by Dave Levin. - * GNUmakefile.am: Use global_cxxflags as well as global_cflags in CXXFLAGS. + Make check-webkit-style support files as arguments. + https://bugs.webkit.org/show_bug.cgi?id=27549 -2008-02-04 Darin Adler <darin@apple.com> + * 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. - Reviewed by Geoff. +2009-08-06 Mike Fenton <mike.fenton@torchmobile.com> - * 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. + Reviewed by David Levin. -2008-02-04 Adam Roben <aroben@apple.com> + 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. - Windows Apple-only build fix + https://bugs.webkit.org/show_bug.cgi?id=27984 - * DumpRenderTree/win/DumpRenderTree.vcproj: Added a new include - directory. + * Scripts/modules/cpp_style.py: + * Scripts/modules/cpp_style_unittest.py: -2008-02-04 Alp Toker <alp@atoker.com> +2009-07-29 David Kilzer <ddkilzer@apple.com> - Rubber-stamped by Mark Rowe. + <http://webkit.org/b/27119> bugzilla-tool: Add create-bug command - Remove all trailing whitespace in the GTK+ port and related - components. + Reviewed by David Levin. - * 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. + Implement "create-bug" command for bugzilla-tool. - Also search LayoutTests/svg for js-based tests. + * 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. - * Scripts/make-js-test-wrappers: - -2008-01-31 Alp Toker <alp@atoker.com> +2009-07-29 Jan Michael Alonzo <jmalonzo@webkit.org> - Rubber-stamped by Adam Roben. + Reviewed by Eric Seidel and Xan Lopez. - http://bugs.webkit.org/show_bug.cgi?id=17006 - [GTK] Header path should be webkit/webkit.h + [Gtk] Enable http/tests/appcache tests + https://bugs.webkit.org/show_bug.cgi?id=27674 - Move the GTK+ API sources as needed and update the build systems. + Add support for testing http/tests/appcache tests. * 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. - + (resetWebViewToConsistentStateBeforeTesting): * 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. + (LayoutTestController::setAppCacheMaximumSize): -2008-01-18 Simon Hausmann <hausmann@webkit.org> +2009-07-28 Mark Rowe <mrowe@apple.com> - 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 Oliver Hunt. - Reviewed by Adam Roben. + Prevent nightly builds of WebKit from launching against old Safari versions that we no longer work with. - http://bugs.webkit.org/show_bug.cgi?id=16908 - run-webkit-tests complains about missing FindSafari.exe + * 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. - * Scripts/webkitdirs.pm: Append _debug as appropriate. +2009-07-28 David Levin <levin@chromium.org> -2008-01-17 Steve Falkenburg <sfalken@apple.com> + Reviewed by Adam Treat. - Re-add DEBUG_WEBKIT_HAS_SUFFIX. + cpplint* should be named cpp_style* + https://bugs.webkit.org/show_bug.cgi?id=27752 - Rubber-stamped by Jon Honeycutt. + The files were renamed. A few renames were done: + CppLint -> CppStyle + cpplint -> cpp_style - * DumpRenderTree/win/DumpRenderTree.vcproj: + * 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. -2008-01-16 Alp Toker <alp@atoker.com> +2009-07-28 Tor Arne Vestbø <tor.arne.vestbo@nokia.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? + Rubber-stamped by Holger Freyther. + + Add Steve Falkenburg to bugzilla-tools' reviewers list - Track back/forward API changes in the tools. + * Scripts/modules/bugzilla.py: - * DumpRenderTree/gtk/WorkQueueItemGtk.cpp: - (BackForwardItem::invoke): - * GtkLauncher/main.c: - (go_back_cb): +2009-07-28 Zoltan Horvath <hzoltan@inf.u-szeged.hu> -2008-01-16 Adam Roben <aroben@apple.com> + Reviewed by Simon Hausmann. - Windows build fix after r29488 + Implement test result archive support for the Qt port. - * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: - Build into a subdirectory of $WebKitOutputDir\bin to match where DRT - expects to find the plugin. + * BuildSlaveSupport/test-result-archive: -2008-01-11 Geoffrey Garen <ggaren@apple.com> +2009-07-27 Brady Eidson <beidson@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. + 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. - * Drosera/win/Drosera.vcproj/Drosera.vcproj: - * DumpRenderTree/win/DumpRenderTree.vcproj: - * DumpRenderTree/win/ImageDiff.vcproj: - * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: - * FindSafari/FindSafari.vcproj: + * DumpRenderTree/mac/ResourceLoadDelegate.mm: + (-[NSURLResponse _drt_descriptionSuitableForTestResult]): + (-[NSURLRequest _drt_descriptionSuitableForTestResult]): -2008-01-14 Stephanie <slewis@apple.com> + * DumpRenderTree/win/ResourceLoadDelegate.cpp: + (descriptionSuitableForTestResult): - Reviewed by NOBODY. +2009-07-27 Pierre d'Herbemont <pdherbemont@apple.com> - revert accidental character. + Reviewed by David Levin. - * Scripts/run-webkit-tests: + "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 -2008-01-14 Stephanie <slewis@apple.com> + modules.bugzilla is not found because not included. - RS=Oliver + * Scripts/modules/scm.py: Properly import modules.bugzilla. - add Quicktime PPC only leaks to Leopard exclude list. See <rdar://problem/5667132> +2009-07-24 Pierre d'Herbemont <pdherbemont@apple.com> - * Scripts/run-webkit-tests: + Reviewed by David Kilzer. -2008-01-14 Darin Adler <darin@apple.com> + 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/do-webcore-rename: Queue up another rename. + * 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. -2008-01-14 Holger Hans Peter Freyther <holger.freyther@trolltech.com> +2009-07-27 Gabor Rapcsanyi <rapcsanyi.gabor@stud.u-szeged.hu> - Reviewed by Darin Adler. + Reviewed by Simon Hausmann. - * 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 + Generating remote links causes a lot of unnecessary spew on Qt build bot too * Scripts/run-webkit-tests: -2008-01-14 Holger Hans Peter Freyther <holger.freyther@trolltech.com> +2009-07-25 Kwang Yul Seo <skyul@company100.net> 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. + Windows build break due to warning C4819 + https://bugs.webkit.org/show_bug.cgi?id=27416 -2008-01-14 Dan Bernstein <mitz@apple.com> + Disable C4819 warning to fix build. - 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. +2009-07-24 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com> -2008-01-13 Dan Bernstein <mitz@apple.com> + Not reviewed. Add Kevin McCullough as reviewer in bugzilla.py - - fix breakage due to last-minute change + * Scripts/modules/bugzilla.py: - * DumpRenderTree/win/DumpRenderTree.cpp: - (runTest): Declare the loop variable. - -2008-01-13 Dan Bernstein <mitz@apple.com> +2009-07-24 Eli Fidler <eli.fidler@torchmobile.com> - Reviewed by Adam Roben. + Reviewed by Adam Treat. - - 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: + Improve git workflow by populating commit messages with ChangeLog entries. + https://bugs.webkit.org/show_bug.cgi?id=27605 -2008-01-12 Holger Hans Peter Freyther <holger.freyther@trolltech.com> + 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. - 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. + * Scripts/commit-log-editor: - * DumpRenderTree/mac/LayoutTestControllerMac.mm: Retain string before returning it to - match the callers expectations that it can take ownership of the string. +2009-07-24 David Levin <levin@chromium.org> -2008-01-11 Alexey Proskuryakov <ap@webkit.org> + Reviewed by Adam Treat. - Reviewed by Adam Roben. + cpplint crash when there is a duplicate header followed by another header. + https://bugs.webkit.org/show_bug.cgi?id=27625 - <rdar://problem/5667275> fast/dynamic/layer-hit-test-crash.html is failing + * 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. - * 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. +2009-07-24 Jakob Petsovits <jakob.petsovits@torchmobile.com> -2008-01-11 Adam Roben <aroben@apple.com> + Reviewed by Adam Treat. - Fix a crash when pathToLocalResource fails and a leak + Filetype support changes for cpplint and check_webkit_style + https://bugs.webkit.org/show_bug.cgi?id=27653 - Reviewed by Darin Adler. + Introduce .c support for check_webkit_style, and remove support for + .cc files in favor of .cpp. - * 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. + * Scripts/check-webkit-style: + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: -2008-01-11 Geoffrey Garen <ggaren@apple.com> +2009-07-24 Eli Fidler <eli.fidler@torchmobile.com> - Reviewed by John Sullivan. + Reviewed by David Levin. - * DumpRenderTree/mac/GCControllerMac.mm: - (GCController::collectOnAlternateThread): Updated for name change. + Improve git workflow by populating commit messages with ChangeLog entries. + https://bugs.webkit.org/show_bug.cgi?id=27605 -2008-01-10 Kevin Ollivier <kevino@theolliviers.com> + add --[no-]write prepare-ChangeLog options to bash completion - wx build fix. Don't build dftables any longer since it's now a Perl - script. + * Scripts/webkit-tools-completion.sh: - * wx/build-wxwebkit: - -2008-01-10 Sam Weinig <sam@webkit.org> +2009-07-24 Andrei Popescu <andreip@google.com> 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> + ApplicationCache should have size limit + https://bugs.webkit.org/show_bug.cgi?id=22700 - 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. + 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: - (setPopupBlockingEnabledCallback): + (setAppCacheMaximumSizeCallback): (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: + (LayoutTestController::setAppCacheMaximumSize): * DumpRenderTree/mac/LayoutTestControllerMac.mm: - (LayoutTestController::execCommand): + (LayoutTestController::setAppCacheMaximumSize): * 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. + (LayoutTestController::setAppCacheMaximumSize): + * DumpRenderTree/wx/LayoutTestControllerWx.cpp: + (LayoutTestController::setAppCacheMaximumSize): -2008-01-02 Luca Bruno <lethalman88@gmail.com> +2009-07-24 Adam Barth <abarth@webkit.org> - 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 + Rubber stamped by Eric Seidel. - * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: include glib.h - * GNUmakefile.am: Added. + Added andersca to list of reviewers. -2007-12-24 Alexey Proskuryakov <ap@webkit.org> + * Scripts/modules/bugzilla.py: - Reviewed by Oliver. +2009-07-24 Mark Rowe <mrowe@apple.com> - Fix fast/events/arrow-keys-on-body.html, failing on Windows. + Reviewed by Xan Lopez. - * DumpRenderTree/win/EventSender.cpp: - (keyDownCallback): Add KF_EXTENDED flag to arrow keys. Also add a count - of 1, even though WebKit currently ignores it. + Fix dozens of "Deallocation of a pointer not malloced" messages seen while running + layout tests on the build bot. -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. + 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: - (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> + * 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: - * Scripts/do-webcore-rename: Remove a stray K. +2009-07-24 Mark Rowe <mrowe@apple.com> -2007-12-18 Darin Adler <darin@apple.com> + Reviewed by Simon Hausmann. - * Scripts/do-webcore-rename: Plan more renaming. + 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. -2007-12-14 Juan A. Suarez Romero <jasuarez@igalia.com> + * BuildSlaveSupport/build.webkit.org-config/master.cfg: + * Scripts/run-javascriptcore-tests: - Reviewed by Alp Toker. +2009-07-23 Jan Michael Alonzo <jmalonzo@webkit.org> - http://bugs.webkit.org/show_bug.cgi?id=16042 - [GTK] Eliminate webkit_init() + Reviewed by Eric Seidel. - Moving webkit initialization to WebView class init. + [Gtk] Add implementation of GCController for DRT + https://bugs.webkit.org/show_bug.cgi?id=27636 * DumpRenderTree/gtk/DumpRenderTree.cpp: + (webViewWindowObjectCleared): (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> + * DumpRenderTree/gtk/GCControllerGtk.cpp: + (GCController::collect): + (GCController::collectOnAlternateThread): + (GCController::getJSObjectCount): - GTK+ DRT build fix for GLib < 2.14. +2009-07-23 Mark Rowe <mrowe@apple.com> - * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: - (LayoutTestController::setWaitToDump): + Update build.webkit.org config for new machine. -2007-12-05 Mark Rowe <mrowe@apple.com> + * BuildSlaveSupport/build.webkit.org-config/config.json: - Reviewed by Alp Toker. +2009-07-23 Brady Eidson <beidson@apple.com> - 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. + Remove accidentally checked in code. - * DumpRenderTree/gtk/DumpRenderTree.cpp: - (invalidateAnyPreviousWaitToDumpWatchdog): - (webViewScriptAlert): - (webViewScriptPrompt): - (webViewScriptConfirm): - (main): - * DumpRenderTree/gtk/DumpRenderTreeGtk.h: - * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: - (waitToDumpWatchdogFired): + * DumpRenderTree/mac/LayoutTestControllerMac.mm: + (waitUntilDoneWatchdogFired): (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> +2009-07-23 Brady Eidson <beidson@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. + Reviewed by Geoff Garen. - - <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. + 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: - (pathToLocalResourceCallback): + (LayoutTestController::LayoutTestController): + (setWillSendRequestReturnsNullOnRedirectCallback): (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. + (LayoutTestController::willSendRequestReturnsNullOnRedirect): + (LayoutTestController::setWillSendRequestReturnsNullOnRedirect): - <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): + * DumpRenderTree/mac/ResourceLoadDelegate.mm: + (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]): + * DumpRenderTree/win/ResourceLoadDelegate.cpp: + (ResourceLoadDelegate::willSendRequest): -2007-12-11 Brady Eidson <beidson@apple.com> +2009-07-23 Mark Rowe <mrowe@apple.com> - Reviewed by Anders + Reviewed Oliver Hunt. - Make DumpRenderTree on mac use its own path for Databases testing + Fix DumpRenderTree to not fail an assertion on launch on a new machine. * 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> + (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. - Rubber stamped by Geoff. +2009-07-23 Mark Rowe <mrowe@apple.com> - * 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. + Reviewed by Oliver Hunt. - Reorganize the headers a little. + 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: - (main): - -2007-12-04 Anders Carlsson <andersca@apple.com> - - Remove IWebScriptScope include. - - * Drosera/win/DebuggerDocumentPlatform.cpp: - -2007-12-04 Sam Weinig <sam@webkit.org> + (resetWebViewToConsistentStateBeforeTesting): - Rubber stamped by Mark Rowe. +2009-07-23 Jakob Petsovits <jakob.petsovits@torchmobile.com> - Define CF as platform for mac and revert r28409 + Reviewed by Adam Treat. - * DumpRenderTree/DumpRenderTree.h: - * DumpRenderTree/mac/DumpRenderTreeMac.h: + Fix false positives for switch statement indentation check in cpplint. + https://bugs.webkit.org/show_bug.cgi?id=27615 -2007-12-04 Sam Weinig <sam@webkit.org> + 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. - Define CF as platform for windows. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - Reviewed by Adam Roben. +2009-07-23 Jakob Petsovits <jakob.petsovits@torchmobile.com> - * DumpRenderTree/win/DumpRenderTreeWin.h: + Reviewed by Adam Treat. -2007-12-04 Kevin McCullough <kmccullough@apple.com> + Add check for line-breaking rule #3 to cpplint. + https://bugs.webkit.org/show_bug.cgi?id=27610 - Reviewed by Adam and Darin. + "An else if statement should be written as an if statement when + the prior if concludes with a return statement." - - Removed a needless BSTR cleanup. + 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). - * Drosera/win/DebuggerDocumentPlatform.cpp: - (DebuggerDocument::getPlatformCurrentFunctionStack): + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: -2007-11-27 Adam Roben <aroben@apple.com> +2009-07-23 Eli Fidler <eli.fidler@torchmobile.com> - Fix <rdar://5614497> setAuthorAndUserStylesEnabled is not implemented in DRT + Reviewed by Adam Treat. - Reviewed by Maciej. + Improve git workflow by populating commit messages with ChangeLog entries. + https://bugs.webkit.org/show_bug.cgi?id=27605 - * DumpRenderTree/win/LayoutTestControllerWin.cpp: - (LayoutTestController::setAuthorAndUserStylesEnabled): Implemented. + add --[no-]write option to optionally output new ChangeLog entries to + stdout instead of modifying ChangeLog files -2007-12-04 Alp Toker <alp@atoker.com> + fix Torch Mobile copyright - Prospective Win DRT build fix. + * Scripts/prepare-ChangeLog: - * DumpRenderTree/DumpRenderTree.h: +2009-07-23 Jakob Petsovits <jakob.petsovits@torchmobile.com> -2007-12-04 Alp Toker <alp@atoker.com> + Reviewed by Adam Treat. - Fix a clobbered copyright header. + Enable cpplint for .c files. + https://bugs.webkit.org/show_bug.cgi?id=27604 - * DumpRenderTree/gtk/DumpRenderTree.cpp: + Also make sure that the check for NULL does not apply to .c files. -2007-12-04 Xan Lopez <xan@gnome.org> + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - Reviewed by Alp Toker. +2009-07-22 Steve Falkenburg <sfalken@apple.com> - http://bugs.webkit.org/show_bug.cgi?id=15561 - GTK port needs DumpRenderTree implementation + Checkpoint new Windows nightly launcher. + + Reviewed by Mark Rowe. - Start work on the GTK+ DRT. + * 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. - 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. +2009-07-22 David Levin <levin@chromium.org> - * 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): + Reviewed by Adam Treat. -2007-12-03 Sam Weinig <sam@webkit.org> + run-webkit-lint should be named check-webkit-style + https://bugs.webkit.org/show_bug.cgi?id=27568 - Move JavaScriptCore thread testing code to pthread specific directory - and remove the dependance on CoreFoundation by using WTF::HashSet. + This name better reflects the fact that it is about checking the style of files. - Reviewed by Geoff and Oliver. + * Scripts/check-webkit-style: Renamed from WebKitTools/Scripts/run-webkit-lint. - * 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> +2009-07-22 Takeshi Yoshino <tyoshino@google.com> Reviewed by Darin Adler. - - fix http://bugs.webkit.org/show_bug.cgi?id=16267 - Symbol lookup menu broken in debugger view + 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 - * 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. + 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. -2007-12-03 Kevin McCullough <kmccullough@apple.com> + 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. - Reviewed by Adam. + Bonus: There's no longer extract-webkit-localizable-strings script. Fix usage message to guide + users to update-webkit-localizable-strings. - - <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. + * Scripts/extract-localizable-strings: - * Drosera/win/DebuggerDocumentPlatform.cpp: - (DebuggerDocument::getPlatformLocalScopeVariableNamesForCallFrame): - (DebuggerDocument::platformValueForScopeVariableNamed): +2009-07-22 Shinichiro Hamaji <hamaji@google.com> -2007-12-03 Stephanie <slewis@apple.com> + Reviewed by David Levin. - Reviewed by Darin Adler. + Tiny typo fixes for cpplint.py + https://bugs.webkit.org/show_bug.cgi?id=27530 - Check to see if we are building a debug root + * Scripts/modules/cpplint.py: - * Scripts/check-for-global-initializers: +2009-07-22 Shinichiro Hamaji <hamaji@chromium.org> -2007-12-03 Dan Bernstein <mitz@apple.com> + Reviewed by David Levin. - Reviewed by Darin Adler. + run-webkit-lint checks code which are not changed + https://bugs.webkit.org/show_bug.cgi?id=27529 - - added a testGetIntIdentifier() method to TestNetscapePlugIn + Add check if the line is newly added. - * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.c: - (pluginInvoke): + * Scripts/run-webkit-lint: -2007-12-03 Alexey Proskuryakov <ap@webkit.org> +2009-07-22 Shinichiro Hamaji <hamaji@chromium.org> - Reviewed by Oliver. + Reviewed by David Levin. - Added eventSender.dispatchMessage() - will be used to test Windows keyboard input - in a more fine-grained manner than eventSender.keyDown(). + run-webkit-lint should have --git-commit option + https://bugs.webkit.org/show_bug.cgi?id=27528 - * DumpRenderTree/win/EventSender.cpp: - (getConstantCallback): - (dispatchMessageCallback): + * Scripts/modules/cpplint.py: + * Scripts/run-webkit-lint: -2007-12-02 Darin Adler <darin@apple.com> +2009-07-22 Peter Kasting <pkasting@google.com> - * Scripts/do-webcore-rename: More planned renaming. + Reviewed by David Kilzer. -2007-12-02 Sam Weinig <sam@webkit.org> + 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. - Rubber stamped by Anders. + * 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). - Use [NSURL absoluteString] instead of [NSURL description] in order to get - more uniform results cross platform. +2009-07-22 Jakob Petsovits <jakob.petsovits@torchmobile.com> - * DumpRenderTree/mac/ResourceLoadDelegate.mm: - (-[NSURL _drt_descriptionSuitableForTestResult]): + Reviewed by Adam Treat. -2007-12-02 Sam Weinig <sam@webkit.org> + Fix false positives in namespace indentation checks. + https://bugs.webkit.org/show_bug.cgi?id=27567 - Rubber stamped by Niko. + 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. - Rename FrameLoaderDelegate.h/cpp to FrameLoadDelegate.h/cpp. + Now comes with a stricter regexp, and more demanding + test cases to check for these issues. - * 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. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: -2007-12-01 Alp Toker <alp@atoker.com> +2009-07-22 Jakob Petsovits <jakob.petsovits@torchmobile.com> - Reviewed by Adam Roben. + Reviewed by Adam Treat. - Make use of the newly introduced webkit.h convenience header. + Fix cpplint generating false positives for + "primary" includes in headers. + https://bugs.webkit.org/show_bug.cgi?id=27553 - * GtkLauncher/main.c: + Doing so by only flagging includes in header files + as primary when the include filename exactly matches + the header filename. -2007-12-01 Adam Treat <treat@kde.org> + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - Reviewed by Simon. +2009-07-22 Jakob Petsovits <jakob.petsovits@torchmobile.com> - * Check to see if the directory exists and exit if not. + Reviewed by Adam Treat. - * DumpRenderTree/qt/main.cpp: - (main): + cpplint generates false positives for primary includes + https://bugs.webkit.org/show_bug.cgi?id=27544 -2007-12-01 Adam Treat <treat@kde.org> + 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. - Reviewed by Simon. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - * Don't hide symbols when in Debug mode - * On Linux (glibc) provide a backtrace in the test output for debugging purposes +2009-07-22 Gabor Rapcsanyi <rapcsanyi.gabor@stud.u-szeged.hu> + Reviewed by Simon Hausmann. - * DumpRenderTree/qt/main.cpp: - (messageHandler): + Pass XAUTHORITY environment variable to $dumpTool as well. -2007-11-30 Alp Toker <alp@atoker.com> + * Scripts/run-webkit-tests: - Reviewed by Adam Roben. +2009-07-21 Jakob Petsovits <jakob.petsovits@torchmobile.com> - http://bugs.webkit.org/show_bug.cgi?id=15691 - [GTK] Public API does not follow GTK+ conventions + Reviewed by Adam Treat. - Refactor the WebKit/GTK+ public API. Changes: - WebKitPage -> WebKitWebView - WebKitFrame -> WebKitWebFrame + Add check for correct wtf includes to cpplint. + https://bugs.webkit.org/show_bug.cgi?id=27524 - Public API source and header names have been updated to mirror the API - changes. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - The API is now kept in WebKit/gtk/WebView to match other ports in the - same class such as Mac and Win. +2009-07-21 Jakob Petsovits <jakob.petsovits@torchmobile.com> - * 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): + Reviewed by David Levin. -2007-11-30 Adam Roben <aroben@apple.com> + Add checks for multi-line boolean operator placement. + https://bugs.webkit.org/show_bug.cgi?id=27496 - Hopefully the final build fix + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - * Drosera/win/Drosera.vcproj/Drosera.vcproj: Link against WTF.lib to - pull in WTF's assertion/logging functions. +2009-07-21 Adam Treat <adam.treat@torchmobile.com> -2007-11-30 Adam Roben <aroben@apple.com> + Reviewed by David Levin. - Another build fix + 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. - * Drosera/win/Drosera.vcproj/Drosera.vcproj: Use the right suffix for - WebKit.lib. + Example: FooQt.cpp and the primary header is Foo.h. -2007-11-30 Adam Roben <aroben@apple.com> + * Scripts/modules/cpplint.py: - Debug build fix +2009-07-21 Jakob Petsovits <jakob.petsovits@torchmobile.com> - * 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. + Reviewed by David Levin. -2007-11-30 Sam Weinig <sam@webkit.org> + Add checks for switch statement indentation to cpplint. + https://bugs.webkit.org/show_bug.cgi?id=27508 - Reviewed by Adam Roben. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - Fix drawSelectionRect to actually draw the selection rect. +2009-07-21 Kenneth Rohde Christiansen <kenneth@webkit.org> - * DumpRenderTree/cg/PixelDumpSupportCG.cpp: - (drawSelectionRect): + Reviewed by Adam Treat. -2007-11-30 Darin Adler <darin@apple.com> + Feature request: cpplint should check for braces - rule 2 + https://bugs.webkit.org/show_bug.cgi?id=27497 - * Scripts/do-webcore-rename: WildFox already did the TextStyle -> FontStyle one. + Add the requested feature: Make sure { is on the same line + as the foreach "keyword". -2007-11-30 Darin Adler <darin@apple.com> + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - * Scripts/do-webcore-rename: Get ready for some future renaming. +2009-07-20 Jakob Petsovits <jakob.petsovits@torchmobile.com> -2007-11-29 Kevin McCullough <kmccullough@apple.com> + Reviewed by David Levin. - Reviewed by Adam. + Add checks for namespace indentation to cpplint. + https://bugs.webkit.org/show_bug.cgi?id=27461 - - Removed some unnecessary functions and changed an unused return type. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - * Drosera/win/DebuggerClient.cpp: - (registerConsoleClass): - * Drosera/win/DebuggerClient.h: - * Drosera/win/Drosera.cpp: - (registerDroseraClass): +2009-07-20 Adam Treat <adam.treat@torchmobile.com> -2007-11-28 Alp Toker <alp@atoker.com> + Reviewed by David Levin. - Reviewed by Timothy Hatcher. + Add cpplint check for proper include order + https://bugs.webkit.org/show_bug.cgi?id=27462 - http://bugs.webkit.org/show_bug.cgi?id=16174 - [GTK] Use "URI" not "URL" in public API + 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. - Replace use of the term "URL" with "URI" in public headers, - documentation and some internal code to match GLib/GTK+ convention. + Add associated tests. - This is now mentioned in the API guidelines: - http://trac.webkit.org/projects/webkit/wiki/HackingGtk + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - * GtkLauncher/main.c: - (activate_uri_entry_cb): - (title_change_cb): - (create_toolbar): - (main): +2009-07-21 Shinichiro Hamaji <hamaji@chromium.org> -2007-11-29 Anders Carlsson <andersca@apple.com> + Reviewed by David Levin. - Reviewed by Sam. + Support lint for patches + https://bugs.webkit.org/show_bug.cgi?id=27291 - <rdar://problem/5230478> - FrameLoadDelegate callbacks are not dumped in DRT. + 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(). - * 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. + * Scripts/modules/cpplint.py: + * Scripts/run-webkit-lint: Added. - * DumpRenderTree/mac/UIDelegate.mm: - (-[UIDelegate webView:quotaForSecurityOrigin:toCreateDatabase:withEstimatedSize:]): - (-[UIDelegate webView:quotaForSecurityOrigin:fromProposedQuota:database:]): - -2007-11-29 Kevin McCullough <kmccullough@apple.com> +2009-07-21 Shinichiro Hamaji <hamaji@chromium.org> - Reviewed by Sam. + Reviewed by David Levin. - - <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. + diff_parser should accept lines without trailing \n + https://bugs.webkit.org/show_bug.cgi?id=27483 - * 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. + Normalize the input lines by removing a trailing newline. + Also, add a case for unittest for newly added files. -2007-11-29 Anders Carlsson <andersca@apple.com> + * Scripts/modules/diff_parser.py: + * Scripts/modules/diff_parser_unittest.py: - * DumpRenderTree/win/DumpRenderTree.vcproj: - Add shlwapi.lib to all configurations. +2009-07-21 Shinichiro Hamaji <hamaji@chromium.org> -2007-11-29 Kevin McCullough <kmccullough@apple.com> + Reviewed by David Levin. - - Build fix. Added additional includes for VS Express to the Release - project. + cpplint.py's process_file() should accept customized error function + https://bugs.webkit.org/show_bug.cgi?id=27487 - * Drosera/win/Drosera.vcproj/Drosera.vcproj: + * Scripts/modules/cpplint.py: -2007-11-29 Anders Carlsson <andersca@apple.com> +2009-07-21 Shinichiro Hamaji <hamaji@chromium.org> - Reviewed by Adam. + Reviewed by David Levin. - <rdar://problem/5132005> - setUserStyleSheetEnabled is not fully implemented in Windows DRT. + cpplint.py should have an interface to get global error count + https://bugs.webkit.org/show_bug.cgi?id=27486 - * DumpRenderTree/win/DumpRenderTree.vcproj: - Add shlwapi.lib + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - * DumpRenderTree/win/LayoutTestControllerWin.cpp: - (LayoutTestController::setUserStyleSheetEnabled): - Implement this. +2009-07-21 Shinichiro Hamaji <hamaji@chromium.org> - (appendComponentToPath): - New method which wraps the Win32 API PathAppend. + Reviewed by David Levin. - (followShortcuts): - New method which checks if a file points to a shortcut and - follows the shortcut. + cpplint's parse_argument should not exit even if no files are specified + https://bugs.webkit.org/show_bug.cgi?id=27489 - (resolveCygwinPath): - New method that takes a cygwin unix-style path and returns the Win32 path. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - (cfStringRefToWString): +2009-07-21 Shinichiro Hamaji <hamaji@chromium.org> - (LayoutTestController::setUserStyleSheetLocation): - Implement this. + Reviewed by David Levin. -2007-11-29 Alice Liu <alice.liu@apple.com> + diff_parser: s/add_deleted_line/add_old_line/g + https://bugs.webkit.org/show_bug.cgi?id=27484 - Reviewed by Adam. + * Scripts/modules/diff_parser.py: - Fixed <rdar://5133828> fast/frames/iframe-window-focus.html output is lowercase +2009-07-21 Roland Steiner <rolandsteiner@google.com> - * DumpRenderTree/win/EventSender.cpp: - (keyDownCallback): - uppercase letters were being sent as lowercase letters without the shift key down. + Reviewed by David Levin. -2007-11-29 Kevin McCullough <kmccullough@apple.com> + Add ENABLE_RUBY to list of build options + https://bugs.webkit.org/show_bug.cgi?id=27324 - - Windows build fix. VS express needs some love. + * Scripts/build-webkit: Added flag ENABLE_RUBY. - * Drosera/win/Drosera.vcproj/Drosera.vcproj: +2009-07-20 Mark Rowe <mrowe@apple.com> -2007-11-28 Darin Adler <darin@apple.com> + Reviewed by David D. Kilzer. - Reviewed by Adam Roben. + Fix <https://bugs.webkit.org/show_bug.cgi?id=27482>. + Bug 27482: svn-apply cannot apply patch generated by Windows SVN - * 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". + 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. - * Scripts/update-javascriptcore-test-results: Add a "--force" option for cases - where you need to update results and more tests are failing than before. + 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. -2007-11-28 Anders Carlsson <andersca@apple.com> + * Scripts/svn-apply: - Reviewed by Darin Adler. +2009-07-20 Peter Kasting <pkasting@google.com> - <rdar://problem/5132001> - contextClick is not implemented in DRT on Windows. + Reviewed by Mark Rowe. - * DumpRenderTree/win/EventSender.cpp: - (contextClickCallback): - Add a callback for contextClick, which sends a WM_RBUTTONDOWN message followed - by a WM_RBUTTONUP message. + https://bugs.webkit.org/show_bug.cgi?id=27468 + Back out r46060, which caused problems for some Apple developers. - * 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). + * DumpRenderTree/win/DumpRenderTree.vcproj: + * DumpRenderTree/win/ImageDiff.vcproj: + * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: -2007-11-27 Maciej Stachowiak <mjs@apple.com> +2009-07-20 Peter Kasting <pkasting@google.com> Reviewed by Darin Adler. - Fix DumpRenderTree ObjC bug comparing strings. + 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. - * DumpRenderTree/mac/ObjCController.m: - (-[ObjCController identityIsEqual::]): Compare strings with string - equality instead of identiy equality. + * Scripts/svn-create-patch: -2007-11-27 Timothy Hatcher <timothy@apple.com> +2009-07-20 Mark Rowe <mrowe@apple.com> - Reviewed by Sam. + Rubber-stamped by Dan Bernstein. - Reset the authorAndUserStylesEnabled preference - back to YES for each test. Fixes the broken tests. + Work around <rdar://problem/7075373> by ensuring that the URL is absolute before handing it off to CoreText. * DumpRenderTree/mac/DumpRenderTree.mm: - (resetWebViewToConsistentStateBeforeTesting): - -2007-11-27 Kevin McCullough <kmccullough@apple.com> + (activateFonts): - Reviewed by Adam. +2009-07-20 David Levin <levin@chromium.org> - - Drosera now displays the console window, although it cannot currently - process JavaScript. + Reviewed by Adam Treat. - * 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): + Enable filename completion for run-webkit-test (added "-o default"). -2007-11-27 Timothy Hatcher <timothy@apple.com> + * Scripts/webkit-tools-completion.sh: - Reviewed by Dave Hyatt. +2009-07-20 Simon Hausmann <simon.hausmann@nokia.com> - <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): + No review, just adding Gavin Barraclough as reviewer. -2007-11-26 Dan Bernstein <mitz@apple.com> + * Scripts/modules/bugzilla.py: - - Tiger build fix. +2009-07-20 Kenneth Rohde Christiansen <kenneth@webkit.org> - * DumpRenderTree/mac/Configurations/Base.xcconfig: + Reviewed by David Levin. -2007-11-26 Kevin McCullough <kmccullough@apple.com> + Add support for Qt's foreach to cpplint + https://bugs.webkit.org/show_bug.cgi?id=27386 - Reviewed by Maciej. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - - Implemented displaying variables for Drosera on Win. +2009-07-18 Jan Michael Alonzo <jmalonzo@webkit.org> - * 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): + https://bugs.webkit.org/show_bug.cgi?id=27145 + [Gtk][REGRESSION] subframe-navigate-during-main-frame-load.html fails after r45615 -2007-11-26 Sam Weinig <sam@webkit.org> + Reviewed by Gustavo Noronha. - Cleanup names of painting and repainting functions. + Normalize file URLs. - 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> + * DumpRenderTree/gtk/DumpRenderTree.cpp: + (dumpHistoryItem): - Convert DumpRenderTree to ues .xcconfig files. +2009-07-17 Peter Kasting <pkasting@google.com> - Reviewed by Mark Rowe. + Reviewed by David Kilzer. - * 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. + https://bugs.webkit.org/show_bug.cgi?id=27323 + Further improve non-Cygwin SVN support. -2007-11-25 Sam Weinig <sam@webkit.org> + * 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. - Add ForwardingHeaders to wtf for DumpRenderTree. +2009-07-18 Simon Fraser <simon.fraser@apple.com> - Reviewed by Mark Rowe. + Fix Tiger DRT build. - * 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> + (createWebViewAndOffscreenWindow): + * DumpRenderTree/mac/PixelDumpSupportMac.mm: - Reviewed by Mark Rowe. +2009-07-17 Simon Fraser <simon.fraser@apple.com> - - fix crash when running pixel tests + Reviewed by Dan Bernstein. - * 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. + 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. -2007-11-21 Eric Seidel <eric@webkit.org> + * DumpRenderTree/mac/PixelDumpSupportMac.mm: + (createBitmapContextFromWebView): - Speculative build fix for Tiger. +2009-07-17 Adam Barth <abarth@webkit.org> - * DumpRenderTree/mac/PixelDumpSupport.mm: include unistd.h + Reviewed by David Levin. -2007-11-21 Eric Seidel <eric@webkit.org> + bugzilla-tool does not understand nested SVN repos + https://bugs.webkit.org/show_bug.cgi?id=27404 - Reviewed by Tim Hatcher. + Determine the root of the working copy by looking at SVN's UUIDs. - Break out more of DumpRenderTree.mm into individual files + * Scripts/modules/scm.py: - * 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. +2009-07-17 David Levin <levin@chromium.org> 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> + webkit-tools-completion.sh has two typos and sorting issues. + https://bugs.webkit.org/show_bug.cgi?id=27401 - Reviewed by Tim Hatcher. + * 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. - 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> +2009-07-17 Peter Kasting <pkasting@google.com> Reviewed by David Kilzer. - * Prepend git branch name to $baseProductDir + https://bugs.webkit.org/show_bug.cgi?id=27323 + Tweak some regexes for correctness. - * Scripts/VCSUtils.pm: - * Scripts/webkitdirs.pm: + * 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.) -2007-11-20 Mark Rowe <mrowe@apple.com> - - Reviewed by Simon Hausmann. +2009-07-17 Peter Kasting <pkasting@google.com> - * 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 Steve Falkenburg. - Reviewed by Mark Rowe. + 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. - http://bugs.webkit.org/show_bug.cgi?id=16040 - [GTK] GtkLauncher should be written in C + * DumpRenderTree/win/DumpRenderTree.vcproj: + * DumpRenderTree/win/ImageDiff.vcproj: + * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: - Port GtkLauncher to plain C. +2009-07-17 David Levin <levin@chromium.org> - Use a more conventional GTK+ coding style. + Reviewed by Adam Treat. - Use a toolbar instead of menus. + WebKit should have a bash completion script to aid with common commands. + https://bugs.webkit.org/show_bug.cgi?id=27374 - Various signature fixes and cleanups. + * Scripts/webkit-tools-completion.sh: The script which enables option completion + for several WebKit command line scripts. - Add a license header. Assume all previous modifications were copyright - assigned to Apple Inc. by default. +2009-07-17 Peter Kasting <pkasting@google.com> - * 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 David Kilzer. - Reviewed by Adam. + https://bugs.webkit.org/show_bug.cgi?id=27323 + Avoid error spew on Macs, and fix a few other tiny details. - * Scripts/build-testkjs: - * Scripts/build-webkit: - * Scripts/run-javascriptcore-tests: - * Scripts/webkitdirs.pm: - * wx/build-wxwebkit: + * Scripts/svn-create-patch: -2007-11-18 Eric Seidel <eric@webkit.org> +2009-07-17 Adam Treat <adam.treat@torchmobile.com> - Reviewed by Anders. + Reviewed by Dave Levin. - Make run-javascriptcore-tests report failures on exit (to support git bisect) + https://bugs.webkit.org/show_bug.cgi?id=27377 + This makes cpplint complain about this for instance: - * Scripts/run-javascriptcore-tests: + if (true) + { + int foo; + } -2007-11-18 Alexey Proskuryakov <ap@webkit.org> + Add the appropriate unit tests. - Reviewed by Adam Roben. + * Scripts/modules/cpplint.py: + * Scripts/modules/cpplint_unittest.py: - Make run-webkit-tests work with Windows debug build. +2009-07-17 Adam Treat <adam.treat@torchmobile.com> - * 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). + Reviewed by Dave Levin. -2007-11-18 Kevin Ollivier <kevino@theolliviers.com> + 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. - Add wxWebKit sample and build script, and integrate it with - build-webkit. Also make build-webkit --clean work for all - ports. + Don't filter whitespace newline. Now, cpplint will complain + about the following situation: - Reviewed by Darin Adler. + if (true) { + doSomething(); + doSomethingAgain(); + } + else + doSomething(); - * 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. + Which is a webkit coding style rule violation. -2007-11-17 Adam Roben <aroben@apple.com> + * Scripts/modules/cpplint.py: - Make it easy to run Safari in the debugger on Windows +2009-07-17 Adam Treat <adam.treat@torchmobile.com> - I've added a new script, debug-safari, which launches Safari in the - debugger. On OS X it just calls gdb-safari. + Reviewed by Dave Levin. - Reviewed by Mark Rowe. + https://bugs.webkit.org/show_bug.cgi?id=27377 + Move this comment to where it belongs. - * 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. + * Scripts/modules/cpplint_unittest.py: -2007-11-16 Alexey Proskuryakov <ap@webkit.org> +2009-07-17 Brent Fulgham <bfulgham@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> + Correct crash in WinLauncher due to improper mixing of BSTR + and TCHAR types. + https://bugs.webkit.org/show_bug.cgi?id=27381 - 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. + * WinLauncher/WinLauncher.cpp: + (loadURL): Perform SysReAllocString to update the BSTR with + the contents of the TCHAR string. -2007-11-16 Mark Rowe <mrowe@apple.com> +2009-07-17 David Levin <levin@chromium.org> - Reviewed by Tim Hatcher. + Reviewed by Adam Treat. - Don't weak link against WebCore now that it is a sub-framework of WebKit in all configurations. + cpplint should flag usages of NULL. + https://bugs.webkit.org/show_bug.cgi?id=27341 - * Drosera/mac/Drosera.xcodeproj/project.pbxproj: - * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: + * 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. -2007-11-15 Adam Roben <aroben@apple.com> +2009-07-17 Shinichiro Hamaji <hamaji@chromium.org> - Make run-safari actually work on Windows + Reviewed by David Levin. - * Scripts/run-safari: Fixed the order of arguments to cp, and added a - chdir call. + Add a parser of patches for linter. + https://bugs.webkit.org/show_bug.cgi?id=27363 -2007-11-14 Adam Roben <aroben@apple.com> + Adds a simple parser for unified diff format. - Updates to Safari launching now that 3.0.4 is released + * Scripts/modules/diff_parser.py: Added. + * Scripts/modules/diff_parser_unittest.py: Added. - Reviewed by Sam. +2009-06-30 Holger Hans Peter Freyther <zecke@selfish.org> - * FindSafari/FindSafari.cpp: - (getWebViewCLSID): Use version-independent ProgID. - * Scripts/run-safari: Use run-webkit-nightly.cmd. + Reviewed by Simon Hausmann. -2007-11-14 Anders Carlsson <andersca@apple.com> + [GTK+] Remove check to be loadable in firefox + https://bugs.webkit.org/show_bug.cgi?id=27345 - Reviewed by Adam. + if (aMozillaVTable->size < sizeof (NPNetscapeFuncs)) + fails in firefox but no other example in the mozilla tree is + doing that check. Remove and be happy. - <rdar://problem/5309081> - In DRT, "plugin.logDestroy = true" not working on Windows. + * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp: + (NP_Initialize): - * DumpRenderTree/win/TestNetscapePlugin/main.c: - (NPP_Destroy): +2009-07-17 Adam Treat <adam.treat@torchmobile.com> -2007-11-14 Eric Seidel <eric@webkit.org> + Reviewed by Simon Hausmann. - Reviewed by Sam. + Something about having a single TAB in a style checking tool like this + is equivalent to nails on a chalk board to me... - * Scripts/run-sunspider: add --shark-cache for L2 Cache Miss profiling + * Scripts/modules/cpplint.py: -2007-11-14 Anders Carlsson <andersca@apple.com> +2009-07-17 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org> - Reviewed by Adam. + Reviewed by Simon Hausmann. - <rdar://problem/5141186> - window.layoutTestController.setWindowIsKey is not implemented in DRT. + Overwrite the plugin directories for the DRT. + Part of https://bugs.webkit.org/show_bug.cgi?id=27215 - Implement setWindowIsKey. + * DumpRenderTree/qt/DumpRenderTree.cpp: + (WebCore::DumpRenderTree::DumpRenderTree): - * DumpRenderTree/win/LayoutTestControllerWin.cpp: - (LayoutTestController::setWindowIsKey): +2009-07-16 Fumitoshi Ukai <ukai@chromium.org> -2007-11-13 Sam Weinig <sam@webkit.org> + Reviewed by David Levin. - Reviewed by Adam Roben. + Add --web-sockets flag and ENABLE_WEB_SOCKETS define. + https://bugs.webkit.org/show_bug.cgi?id=27206 + + Add --web-sockets flag. - Fix for <rdar://problem/5382579> - http/tests/security/cross-frame-access-put.html reports large - negative numbers for screenLeft and screenTop (Mac reports "0") + * Scripts/build-webkit: add --web-sockets flag. - * 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> +2009-07-16 Adam Treat <adam.treat@torchmobile.com> - Reviewed by Darin Adler. + Reviewed by Dave Levin. - - fix <http://bugs.webkit.org/show_bug.cgi?id=13371> - DumpRenderTree --pixel-tests renders each test twice + cpplint should check for one line control clauses that are surrounded + by braces + https://bugs.webkit.org/show_bug.cgi?id=27354 - * 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. + * 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. -2007-11-12 Antti Koivisto <antti@apple.com> +2009-07-16 Peter Kasting <pkasting@google.com> - Reviewed by Adele. + Reviewed by David Kilzer. - Add support for http media tests + 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/run-webkit-tests: + * 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. -2007-11-12 Sam Weinig <sam@webkit.org> +2009-07-16 Peter Kasting <pkasting@google.com> Reviewed by Adam Roben. - Implement LayoutTestController.setPrivateBrowsingEnabled(bool) for windows. + https://bugs.webkit.org/show_bug.cgi?id=27323 + Improve support for non-Cygwin SVNs on Windows. - * DumpRenderTree/win/DumpRenderTree.cpp: - (runTest): - * DumpRenderTree/win/LayoutTestControllerWin.cpp: - (LayoutTestController::setPrivateBrowsingEnabled): + * 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. -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. +2009-07-16 Joseph Pecoraro <joepeck02@gmail.com> 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> + WebKitTools/Scripts/svn-create-patch is broken + https://bugs.webkit.org/show_bug.cgi?id=27328 - Reviewed by Adam. + * Scripts/svn-create-patch: one line fix for unusual perl behavior - - Changed the vcproj file to use Drosera's ForwardingHeaders and not - WebCore's! +2009-07-16 David Levin <levin@chromium.org> - * 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: + Reviewed by David Kilzer. -2007-11-08 Kevin McCullough <kmccullough@apple.com> + cpplint should check for equality comparisons to 0/true/false + https://bugs.webkit.org/show_bug.cgi?id=27333 - Reviewed by Sam. + * 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) - - Use the new IWebFrame [local] function signature and get the shared - server correctly. +2009-07-16 David D. Kilzer <ddkilzer@webkit.org> - * Drosera/win/DebuggerClient.cpp: - (DebuggerClient::didFinishLoadForFrame): - * Drosera/win/ServerConnection.cpp: - (ServerConnection::attemptToCreateServerConnection): + <http://webkit.org/b/27241> bugzilla-tool post-commits silently fails with bad args -2007-11-07 Dan Bernstein <mitz@apple.com> + Reviewed by Eric Seidel. - Reviewed by Darin Adler. + * Scripts/bugzilla-tool: + (PostCommitsAsPatchesToBug.execute): Added more error checking + when consuming arguments. - - add an option to run-webkit-tests to ignore pixel test failures where - all pixels differ by no more than a specified threshold +2009-07-16 David D. Kilzer <ddkilzer@webkit.org> - * DumpRenderTree/mac/ImageDiff.m: - (main): - (compareImages): - (computePercentageDifferent): - * Scripts/run-webkit-tests: + TOOL FIX: scm.py: CommitMessage.message is ambiguous -2007-11-07 Simon Hausmann <hausmann@kde.org> + Fixes this error when running bugzilla-tool apply-patches + --local-commit: - Reviewed by Lars. + 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 - Make the setting of letting Javascript access the clipboard configurable through QWebSettings, turn it off by default and turn it on in DumpRenderTree. + * 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): - * DumpRenderTree/qt/DumpRenderTree.cpp: +2009-07-16 David D. Kilzer <ddkilzer@webkit.org> -2007-11-07 Simon Hausmann <hausmann@kde.org> + TOOL FIX: bugzilla-tool: import CommitMessage class - Reviewed by Lars. + * Scripts/bugzilla-tool: After r45940, the CommitMessage class + needs to be imported for commit_message_for_this_commit(). - 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(). +2009-07-16 David Levin <levin@chromium.org> - * DumpRenderTree/qt/DumpRenderTree.cpp: + Reviewed by Maciej Stachowiak. -2007-11-07 Simon Hausmann <hausmann@kde.org> + prepare-ChangeLog should display the --bug option in its help text. + https://bugs.webkit.org/show_bug.cgi?id=27334 - Reviewed by Lars. + * Scripts/prepare-ChangeLog: Added the help text. - Make QWebHistory an explicitly shared object, returned as a pointer by QWebPage::history(). +2009-07-15 Darin Adler <darin@apple.com> - * DumpRenderTree/qt/jsobjects.cpp: + * Scripts/do-webcore-rename: Check in the version used to + rename parseURL to deprecatedParseURL. -2007-11-07 Simon Hausmann <hausmann@kde.org> +2009-07-10 David Kilzer <ddkilzer@apple.com> - Reviewed by Lars Knoll <lars@trolltech.com>. + bugzilla-tool: create CommitMessage class - Add a QWebPage::frameCreated() signal and fix DRT + Reviewed by Eric Seidel. - The removal of createFrame in QWebPage broke the re-implementation - in DumpRenderTree. Instead emit a frameCreated() signal and - connect to it in DumpRenderTree. + 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. - * DumpRenderTree/qt/DumpRenderTree.cpp: - (WebCore::WebPage::WebPage): - (WebCore::DumpRenderTree::dump): - (WebCore::DumpRenderTree::connectFrame): - * DumpRenderTree/qt/DumpRenderTree.h: + bugzilla-tool/svn-apply can't handle patches made from a non-root directory + https://bugs.webkit.org/show_bug.cgi?id=26999 -2007-11-07 Simon Hausmann <hausmann@kde.org> + * Scripts/svn-create-patch: - Reviewed by Lars Knoll <lars@trolltech.com>. +2009-07-15 Shinichiro Hamaji <hamaji@chromium.org> - Moved all the event handlers from QWebFrame into QWebPage. + Reviewed by David Levin. - This cleans up the public API and allows us to remove the - HackWebFrame hack in DumpRenderTree. + 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. - * DumpRenderTree/qt/jsobjects.cpp: - (EventSender::mouseDown): - (EventSender::mouseUp): - (EventSender::mouseMoveTo): +2009-07-15 Simon Hausmann <simon.hausmann@nokia.com> -2007-11-07 Simon Hausmann <hausmann@kde.org> + Reviewed by Adam Treat. - Reviewed by Mark. + https://bugs.webkit.org/show_bug.cgi?id=27295 - Implemented the two Javascript prompt callbacks in qt/DumpRenderTree - to prevent the default implementation from popping up messageboxes. + 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::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:]): + (WebCore::WebPage::shouldInterruptJavaScript): Return false + in re-implemented slot. -2007-11-04 Mark Rowe <mrowe@apple.com> +2009-07-15 Zoltan Horvath <hzoltan@inf.u-szeged.hu> - 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. + Reviewed by Jan Alonzo. - * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: - -2007-11-03 Maciej Stachowiak <mjs@apple.com> - - Rubber stamped by Adam. + Fix the DumpRenderTree GTK+ build + https://bugs.webkit.org/show_bug.cgi?id=27290 - - Turn off deprecated function warnings for TestNetscapePlugin because Carbon.h triggers them - - * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: + Set USE_SYSTEM_MALLOC macro for the DumpRenderTree build to + disable using TCmalloc in DumpRenderTree. -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: + * GNUmakefile.am: -2007-11-03 David D. Kilzer <ddkilzer@webkit.org> +2009-07-14 Steve Falkenburg <sfalken@apple.com> - Script to sort "files(...);" sections in Xcode project.pbxproj files. + Reorganize JavaScriptCore headers into: + API: include/JavaScriptCore/ + Private: include/private/JavaScriptCore/ 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: + * DumpRenderTree/win/ImageDiff.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. +2009-07-14 Shinichiro Hamaji <hamaji@chromium.org> - * 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. + Reviewed by David Levin. -2007-10-30 Kevin McCullough <kmccullough@apple.com> + WebKit needs a style linting tool + https://bugs.webkit.org/show_bug.cgi?id=25884 - Reviewed by Adam. + Modifies cpplint (http://google-styleguide.googlecode.com/svn/trunk/cpplint/) + based on WebKit's style guide. - - Small cleanup in the ServerConnection class. + * Scripts/cpplint.py: Added. + * Scripts/cpplint_unittest.py: Added. - * 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. +2009-07-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> -2007-10-29 Timothy Hatcher <timothy@apple.com> + Reviewed by Simon Hausmann. - Reviewed by John Sullivan. + [Qt] DumpRenderTree no longer builds with Qt4.4 + https://bugs.webkit.org/show_bug.cgi?id=27257 - - Place the Localizable.strings file in mac or win directories - if that location exists. - - Also look for UI_STRING in .c files. + Flag Qt 4.5 dependency to allow building with Qt 4.4. - * Scripts/extract-localizable-strings: + * DumpRenderTree/qt/main.cpp: + (main): -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> +2009-07-13 Brent Fulgham <bfulgham@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. + Add new configuration flag for redistributable Windows build. + https://bugs.webkit.org/show_bug.cgi=27087 - - Implemented server calls now the WebScriptDebugServer exists. - - Also removed no longer needed call to initialize CG. + * 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. - * 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. +2009-07-13 Simon Hausmann <simon.hausmann@nokia.com> -2007-10-24 George Staikos <staikos@kde.org> + Reviewed by Ariya Hidayat. - Unbreak Qt build. + Always run the Qt DRT with the raster graphicssystem on X11, for + increased stability in the image based tests, in particular canvas. - * 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: + * DumpRenderTree/qt/main.cpp: + (main): -2007-10-24 Lars Knoll <lars@trolltech.com> +2009-07-13 Simon Hausmann <simon.hausmann@nokia.com> - Reviewed by Simon. + Reviewed by Ariya Hidayat. - make the man webpage believe it has focus, so the editing tests work correctly. + Fix test netscape plugin usage with the Qt DRT. * DumpRenderTree/qt/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::DumpRenderTree): + (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. -2007-10-24 Lars Knoll <lars@trolltech.com> +2009-07-13 Simon Hausmann <hausmann@webkit.org> - Reviewed by Simon. + Reviewed by Ariya Hidayat. - implement layoutTestController.dumpEditingCallbacks() correctly. + 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::DumpRenderTree): - * DumpRenderTree/qt/jsobjects.cpp: - (LayoutTestController::reset): - (LayoutTestController::dumpEditingCallbacks): + (WebCore::DumpRenderTree::open): Call setFixedContentsSize() with an invalid + QSize to disable the fixed layout. -2007-10-24 Lars Knoll <lars@trolltech.com> +2009-07-13 Simon Hausmann <hausmann@webkit.org> - Reviewed by Simon. + Reviewed by Ariya Hidayat. - Implement support for testing editing. + 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::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: + (WebCore::DumpRenderTree::createWindow): -2007-10-09 Lars Knoll <lars@trolltech.com> +2009-07-13 Simon Hausmann <hausmann@webkit.org> - Reviewed by Simon. + Reviewed by Ariya Hidayat. - 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. + Added support for LayoutTestController.setPrivateBrowsingEnabled. - * DumpRenderTree/qt/DumpRenderTree.cpp: - (WebCore::WebPage::createFrame): - (WebCore::DumpRenderTree::DumpRenderTree): - (WebCore::DumpRenderTree::titleChanged): - * DumpRenderTree/qt/DumpRenderTree.h: * DumpRenderTree/qt/jsobjects.cpp: (LayoutTestController::reset): + (LayoutTestController::setPrivateBrowsingEnabled): * 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> +2009-07-13 Simon Hausmann <hausmann@webkit.org> - Reviewed by Simon. + Reviewed by Ariya Hidayat. - 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. + Added support for database callbacks, storage quota setting, + and clearing of all databases. * DumpRenderTree/qt/DumpRenderTree.cpp: (WebCore::DumpRenderTree::DumpRenderTree): - (WebCore::DumpRenderTree::createWindow): - (WebCore::DumpRenderTree::windowCount): + (WebCore::DumpRenderTree::dumpDatabaseQuota): * 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): + (LayoutTestController::setDatabaseQuota): + (LayoutTestController::clearAllDatabases): * DumpRenderTree/qt/jsobjects.h: + (LayoutTestController::shouldDumpDatabaseCallbacks): + (LayoutTestController::dumpDatabaseCallbacks): * 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> - +2009-07-13 Simon Hausmann <hausmann@webkit.org> - - Reverted an accidentally checked in file. + Reviewed by Ariya Hidayat. - * Drosera/win/DebuggerDocumentPlatform.cpp: Removed. + Setup the path in the Qt DRT for HTML 5 Databases, to enable some of + the storage layout tests. -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): + * DumpRenderTree/qt/main.cpp: (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): +2009-07-13 Simon Hausmann <hausmann@webkit.org> -2007-09-20 Julien Chaffraix <julien.chaffraix@gmail.com> + Reviewed by Ariya Hidayat. - Reviewed by Adam. + Make the test output more robust by dumping only when the main + frame finishes loading, instead of when _any_ frame finishes. - 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: + * DumpRenderTree/qt/DumpRenderTree.cpp: + (WebCore::DumpRenderTree::DumpRenderTree): Connect to the + main frame's loadFinished() signal instead of the page's one. -2007-09-17 Sam Weinig <sam@webkit.org> +2009-07-13 Simon Hausmann <hausmann@webkit.org> - Reviewed by Adam Roben. + Reviewed by Ariya Hidayat. - Share more code between mac and windows DRT. - - GCController is now shared. - - Rename WaitUntilDoneDelegate to FrameLoadDelegate for consistency. + Implement the GCController DRT interface. - * 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. + * 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/win/WaitUntilDoneDelegate.cpp: Removed. - * DumpRenderTree/win/WaitUntilDoneDelegate.h: Removed. + * DumpRenderTree/qt/jsobjects.h: Declare GCController. -2007-09-17 Sam Weinig <sam@webkit.org> +2009-07-13 Simon Hausmann <hausmann@webkit.org> - Reviewed by Adam Roben. + Reviewed by Ariya Hidayat. - 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. + Implement the GCController DRT interface in the Qt DRT. - * 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. + * 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::~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): + * DumpRenderTree/qt/jsobjects.h: Declare GCController. -2007-08-28 David Kilzer <ddkilzer@apple.com> +2009-07-13 Jan Michael Alonzo <jmalonzo@webkit.org> - Reviewed by Maciej. + https://bugs.webkit.org/show_bug.cgi?id=26718 [Gtk] Add support for javascript windows for DRT - Ignore files in /resources/ subdirectories when creating a list of added tests. + Reviewed by Gustavo Noronha and Xan Lopez. - * 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. + Support running of tests that open and close JS windows automatically. - * 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: + * DumpRenderTree/gtk/DumpRenderTree.cpp: (dumpFramesAsText): + (dumpBackForwardListForAllWebViews): + (resetWebViewToConsistentStateBeforeTesting): (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: + (webViewClose): (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: + (webViewCreate): (main): + * DumpRenderTree/gtk/DumpRenderTreeGtk.h: + * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: + (LayoutTestController::windowCount): + (LayoutTestController::setPopupBlockingEnabled): -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). +2009-07-13 Shinichiro Hamaji <hamaji@chromium.org> - 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. + Reviewed by Maciej Stachowiak. - 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. + prepare-ChangeLog should decode HTML entities in short description + https://bugs.webkit.org/show_bug.cgi?id=27122 - Reviewed by Mark. + 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: - (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. +2009-07-13 Drew Wilson <atwilson@google.com> -2007-07-18 Adam Treat <treat@kde.org> + Reviewed by David Levin. - Reviewed by bdash. + Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs + https://bugs.webkit.org/show_bug.cgi?id=26932 - Use the old wording for Safari. + Added support for --shared-workers (turned off by default) * 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> +2009-07-12 Dan Bernstein <mitz@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. + Reviewed by Maciej Stachowiak. - Ignore Page.o in debug builds because it now has a static PageCounter - object. + 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: -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> +2009-07-11 Simon Fraser <simon.fraser@apple.com> - Reviewed by Anders. + Enable support for accelerated compositing and 3d transforms on Leopard. + <https://bugs.webkit.org/show_bug.cgi?id=20166> + <rdar://problem/6120614> - <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. + Reviewed by Oliver Hunt. -2007-05-29 David Kilzer <ddkilzer@webkit.org> + * Configurations/FeatureDefines.xcconfig: + * wtf/Platform.h: - Reviewed by Darin Adler. +2009-07-10 David Kilzer <ddkilzer@apple.com> - - fix http://bugs.webkit.org/show_bug.cgi?id=13900 - svnStatus($) subroutine in svn-[un]apply does not work properly with directories + <http://webkit.org/b/27173> svn-apply: Fix typo in git command used to find deleted files - 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. + Reviewed by Eric Seidel. * 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. + (scmWillDeleteFile): Changed 'head' to 'HEAD'. -2007-05-28 David Kilzer <ddkilzer@webkit.org> +2009-07-10 David Kilzer <ddkilzer@apple.com> - Reviewed by Darin Adler. + <http://webkit.org/b/27167> bugzilla-tool: hide help for unsupported commands - - 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. + Reviewed by Eric Seidel. - * DumpRenderTree/DumpRenderTree.m: - * DumpRenderTree/FrameLoadDelegate.m: + 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. -2007-05-25 Simon Hausmann <hausmann@kde.org> + * 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. - Reviewed by Zack. +2009-07-10 David Kilzer <ddkilzer@apple.com> - 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. + <http://webkit.org/b/27117> bugzilla-tool: use Mac OS X keychain for authentication - * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp: - * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.h: - * DumpRenderTree/DumpRenderTree.qtproj/main.cpp: + Reviewed by Eric Seidel. -2007-05-20 David Kilzer <ddkilzer@webkit.org> + 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. - - 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> + * 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. - Reviewed by Mitz. + * Scripts/modules/logging.py: Added. + (log): Added. + (error): Added. Prefix error messages with "ERROR: ". - Add a setUseDashboardCompatibilityMode method to LayoutTestController which is used to toggle - the dashboard compatibility mode. +2009-07-10 Adam Roben <aroben@apple.com> - * 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. + Sort all our Xcode projects -2007-04-23 Darin Adler <darin@apple.com> + Accomplished using sort-Xcode-project-file. - Reviewed by Hyatt. + Requested by Dave Kilzer. - - 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(). + * DrawTest/DrawTest.xcodeproj/project.pbxproj: * 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. + * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj: - 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. +2009-07-10 Adam Roben <aroben@apple.com> - * 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. + Print prepare-ChangeLog's reminders to STDERR so they don't end up in + the diff output -2007-04-09 Geoffrey Garen <ggaren@apple.com> + 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. - 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): + * Scripts/prepare-ChangeLog: -2007-03-04 Krzysztof Kowalczyk <kkowalczyk@gmail.com> +2009-07-08 Adam Roben <aroben@apple.com> - Reviewed by Nikolas Zimmermann. + Use case-insensitive comparisons when sorting Xcode project files - Load a url given on a command line in a way that also - works for local (file://) urls. + This matches the sorting used in Xcode's files list. - * GdkLauncher/main.cpp: - (main): + 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> -2007-03-02 Geoffrey Garen <ggaren@apple.com> + Reviewed by Dave Kilzer. - Tweaked parse-malloc-history to work with new malloc_history output format. + * Scripts/sort-Xcode-project-file: + (sortChildrenByFileName): + (sortFilesByFileName): + Lowercase the strings before comparing them so that the comparison + will be case-insensitive. - * Scripts/parse-malloc-history: +2009-07-08 Simon Hausmann <hausmann@webkit.org> -2007-02-28 Vladimir Olexa <vladimir.olexa@gmail.com> + Reviewed by Holger Freyther. - Reviewed by Tim H. + https://bugs.webkit.org/show_bug.cgi?id=27109 - Fixes: http://bugs.webkit.org/show_bug.cgi?id=12887 - Bug#12887: [Drosera] Add ability to close loaded files + Fix side-effects in the Qt DRT with tests using application fonts. - * 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 + Detect if a test used application fonts and re-initialize the fontconfig + application fontset accordingly. -2007-02-28 Nikolas Zimmermann <zimmermann@kde.org> + * 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. - Reviewed by Maciej. +2009-07-10 Antonio Gomes <antonio.gomes@openbossa.org> - Add new flags to build-webkit to be able to switch on/off xpath, xslt, etc. easily. + Reviewed by Simon Hausmann. - * Scripts/build-webkit: + [QT] [ARM] Add pkg-config entry for FontConfig on DRT.pro + https://bugs.webkit.org/show_bug.cgi?id=26990 -2007-02-27 Geoffrey Garen <ggaren@apple.com> + Missing pkg-config entry for FontConfig in DRT.pro causes some compilers to + not link fine against FontConfig bits. - Small tweak to run-webkit-tests. + * DumpRenderTree/qt/DumpRenderTree.pro: - * Scripts/run-webkit-tests: Allow people with lots of RAM to run more than - 1000 MallocStackLogging tests at a time. +2009-07-09 Drew Wilson <atwilson@google.com> -2007-02-26 Maciej Stachowiak <mjs@apple.com> + Reviewed by Alexey Proskuryakov. - Reviewed by Lars. + https://bugs.webkit.org/show_bug.cgi?id=26903 - - set ENABLE_XSLT even when compiling without SVG support, since that is no - longer hardcoded into config.h. + Turned on CHANNEL_MESSAGING by default because the MessageChannel API + can now be implemented for Web Workers and is reasonably stable. * 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 +2009-07-09 David Kilzer <ddkilzer@apple.com> - * 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> + <http://webkit.org/b/27114> bugzilla-tool: Parse short bug URL from commit log messages Reviewed by Adam Roben. - Linux/gdk build fixes. - - * GdkLauncher/gdklauncher.bkl: + * Scripts/bugzilla-tool: + (bug_id_from_commit_message): Check for the short bug URL before + checking for the longer bugs.webkit.org URL. -2007-02-08 Kevin McCullough <KMcCullough@apple.com> +2009-07-08 David Kilzer <ddkilzer@apple.com> - - Fix layout test failures. - - * Scripts/run-webkit-tests: + Bug 27062: bugzilla-tool: post-commits should read bug id from commit log and actually work -2007-02-08 Darin Adler <darin@apple.com> + <https://bugs.webkit.org/show_bug.cgi?id=27062> - 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): + Reviewed by Eric Seidel. -2007-01-30 David Kilzer <ddkilzer@webkit.org> + 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. - 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> + Make prepare-ChangeLog less shouty + https://bugs.webkit.org/show_bug.cgi?id=27098 - 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. + * Scripts/prepare-ChangeLog: - - a couple tiny tweaks to make --reset-results work better +2009-07-08 David Kilzer <ddkilzer@apple.com> - * 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. + Bug 27083: bugzilla.py: Clean up bug_server use -2007-01-21 Sanjay Madhav <sanjay12@gmail.com> + <https://bugs.webkit.org/show_bug.cgi?id=27083> 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. + * 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. -2007-01-20 Adam Roben <aroben@apple.com> +2009-07-08 Brent Fulgham <bfulgham@webkit.org> - Rubberstamped by Maciej. + Build fix for Windows Cairo. - * Scripts/run-webkit-tests: Change the default behavior back to - generating results for new tests (this can be disabled with - --no-new-test-results) + Cairo build was incorrectly #including the PixelDumpSupportCG.h + instead of PixelDumpSupportCairo.h -2007-01-19 Lars Knoll <lars@trolltech.com> + * DumpRenderTree/win/PixelDumpSupportWin.cpp: Correct #include - 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. +2009-07-08 David Faure <faure@kde.org> - * 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. + Reviewed by Ariya Hidayat. -2007-01-17 Lars Knoll <lars@trolltech.com> + Small documentation improvement for build-webkit --help - Fix my last commit to actually work in all cases. + * Scripts/build-webkit: mention --debug option - * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::readStdin): +2009-07-07 Brady Eidson <beidson@apple.com> -2007-01-17 Lars Knoll <lars@trolltech.com> + Tiger build fix, work around missing NSString API. - 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> + * DumpRenderTree/mac/DumpRenderTree.mm: + (dumpHistoryItem): - Reviewed by Zack +2009-07-07 Brady Eidson <beidson@apple.com> - Small fixes in DumpRenderTree, so we don't by - accident dump twice for the same test. + Reviewed by Mark Rowe. - Exclude one more test as it currently causes DumpRenderTree to - hang forever. + https://bugs.webkit.org/show_bug.cgi?id=27049 - In dumpBackForwardList() mode, DRT should normalize file urls. - * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::readStdin): - (WebCore::DumpRenderTree::dump): - * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp: - (LayoutTestController::notifyDone): - * DumpRenderTree/DumpRenderTree.qtproj/tests-skipped.txt: + Make the dump of a history item agnostic to the layout of filesystem on the testing machine. -2007-01-17 Lars Knoll <lars@trolltech.com> + * DumpRenderTree/mac/DumpRenderTree.mm: + (dumpHistoryItem): + * DumpRenderTree/win/DumpRenderTree.cpp: + (dumpHistoryItem): - Reviewed by Zack +2009-07-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - 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. + Rubber-stamped by Simon Hausmann. - 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. + Correct git url of the Qt test-fonts. - * DumpRenderTree/DumpRenderTree.qtproj/main.cpp: - (messageHandler): + * DumpRenderTree/qt/main.cpp: (main): - * Scripts/run-webkit-tests: -2007-01-16 Lars Knoll <lars@trolltech.com> +2009-07-07 Simon Hausmann <hausmann@webkit.org> - Reviewed by Zack + Reviewed by Holger Freyther. - Use the new public API for the Qt build, and don't rely on - WebKit internals anymore. + Clear the main frame's name between loading pages, like in r36652. This + reduces the side-effects between test cases. - * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::DumpRenderTree): - (WebCore::DumpRenderTree::~DumpRenderTree): + * DumpRenderTree/qt/DumpRenderTree.cpp: (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 +2009-07-06 Simon Hausmann <hausmann@webkit.org> - <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. + Reviewed by Holger Freyther. -2007-01-15 Eric Seidel <eric@webkit.org> + Fix various layout tests with Qt's DRT. - Reviewed by bdash. + Remember to set the focus on the web page before + loading. - Add a script to keep our header guards squeaky clean. + * DumpRenderTree/qt/DumpRenderTree.cpp: + (WebCore::DumpRenderTree::open): - * Scripts/clean-header-guards: Added. +2009-07-07 Simon Hausmann <hausmann@webkit.org> -2007-01-15 Lars Knoll <lars@trolltech.com> + Reviewed by Tor Arne Vestbø and Holger Freyther. - Reviewed by Zack + Fix timeout timer handling in Qt DRT. - Fix a few smaller issues in here, and update - our list of skipped tests. + 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/DumpRenderTree.qtproj/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::DumpRenderTree): - (WebCore::DumpRenderTree::readStdin): - (WebCore::DumpRenderTree::dump): - * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.h: - * DumpRenderTree/DumpRenderTree.qtproj/jsobjects.cpp: + * DumpRenderTree/qt/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." + * DumpRenderTree/qt/jsobjects.h: -2006-12-23 Geoffrey Garen <ggaren@apple.com> +2009-07-06 Eric Seidel <eric@webkit.org> 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> + bugzilla-tool fails to close bugs with bugzilla 3.0 + https://bugs.webkit.org/show_bug.cgi?id=27008 - Reviewed by Tim H. + 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. - Bug 11341: REGRESSION (r16760): editing/selection/editable-links is failing - http://bugs.webkit.org/show_bug.cgi?id=11341 + * Scripts/modules/bugzilla.py: + * Scripts/modules/scm.py: - Link editing behavior became a preference. DumpRenderTree needs to specify the - non-default behavior it wants (WebKitEditableLinkOnlyLiveWithShiftKey). +2009-07-03 Maciej Stachowiak <mjs@apple.com> - * 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. + Reviewed by Eric Seidel. -2006-08-28 Nikolas Zimmermann <zimmermann@kde.org> + bugzilla-tool forgot how to obsolete patches + https://bugs.webkit.org/show_bug.cgi?id=26951 - Reviewed by Tim Hatcher. + * Scripts/modules/bugzilla.py: - Fixes one chunk of: http://bugs.webkit.org/show_bug.cgi?id=10604 +2009-07-02 Brent Fulgham <bfulgham@webkit.org> - * DumpRenderTree/DumpRenderTree.qtproj/DumpRenderTree.cpp: - (WebCore::DumpRenderTree::checkLoaded): Faster polling for isLoaded() in - Qt's DumpRenderTree. + 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. - * Scripts/run-webkit-tests: - Use -expected-qt.txt etc.. output in run-webkit-test if isQt(). + * DumpRenderTree/win/PixelDumpSupportWin.cpp: + (createBitmapContextFromWebView): -2006-08-28 Darin Adler <darin@apple.com> +2009-07-02 Eric Seidel <eric@webkit.org> - Reviewed by Tim Hatcher. + Correct blatant typo (missing []), no review. - * Scripts/build-drosera: Fix behavior when there are multiple options. + * Scripts/modules/scm.py: -2006-08-27 Timothy Hatcher <timothy@apple.com> +2009-07-02 Brent Fulgham <bfulgham@webkit.org> - Reviewed by Anders. + Windows build fix, no review. - Drosera will be built when you type make. - * Drosera/Makefile: Added. - * Makefile: Added. - * Makefile.shared: Added. + Reverting PixelDumpSupportWin.cpp change to avoid strange + error on the build-bot. + + * DumpRenderTree/win/PixelDumpSupportWin.cpp: + (createBitmapContextFromWebView): -2006-08-27 Anders Carlsson <acarlsson@apple.com> +2009-07-02 Brent Fulgham <bfulgham@webkit.org> - Forgot to add these. + Build fix, no review. - * 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): + * DumpRenderTree/config.h: -2006-08-27 Nikolas Zimmermann <zimmermann@kde.org> +2009-07-02 Eric Seidel <eric@webkit.org> - Reviewed by Eric, landed by Anders. + Reviewed by David Levin. - Add DumpRenderTree support for Qt/Linux. + bugzilla-tool needs to handle login failure + https://bugs.webkit.org/show_bug.cgi?id=26913 - * 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: + We now exit(1) on login failure. -2006-08-24 Nikolas Zimmermann <zimmermann@kde.org> + * Scripts/modules/bugzilla.py: - Reviewed by Eric. Landed by rwlbuis. +2009-06-30 Brent Fulgham <bfulgham@webkit.org> - Add QtLauncher (was testunity before), which provides a - standalone "browser" to test the Qt platform stuff. + Reviewed by Adam Roben. - * QtLauncher/CMakeLists.txt: Added. - * QtLauncher/main.cpp: Added. + 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. -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. +2009-07-02 Eric Seidel <eric@webkit.org> - Bug 9889: [Drosera] Stepping out when paused after last statement in function skips a frame - http://bugs.webkit.org/show_bug.cgi?id=9889 + No review, just adding Antti as a reviewer. - * 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. + * Scripts/modules/bugzilla.py: -2006-07-12 David Kilzer <ddkilzer@kilzer.net> +2009-07-02 Antonio Gomes <antonio.gomes@openbossa.org> - Reviewed by Darin Adler. + Reviewed by Simon Hausmann. - - fix http://bugs.webkit.org/show_bug.cgi?id=9848 - Teach svn-create-patch and friends to fix ChangeLog patches + https://bugs.webkit.org/show_bug.cgi?id=26896 - * Scripts/svn-apply: Added fixChangeLogPatch() and invoked it in the proper place. - * Scripts/svn-create-patch: Ditto. - * Scripts/svn-unapply: Ditto. + [Qt] Set DRT's default fontsize to 13. -2006-07-12 Mark Rowe <opendarwin.org@bdash.net.nz> + * DumpRenderTree/qt/DumpRenderTree.cpp: + (WebCore::WebPage::WebPage): - Reviewed by ggaren. +2009-07-01 Eric Seidel <eric@webkit.org> - Bug 9869: [Drosera] JS Console fails to evaluate input when paused in global scope - http://bugs.webkit.org/show_bug.cgi?id=9869 + Reviewed by Adam Barth. - * Drosera/DebuggerDocument.m: - (-[WebScriptObject currentFunctionStack]): Include the global frame in the stack. + bugzilla-tool fails for SVN users + https://bugs.webkit.org/show_bug.cgi?id=26914 -2006-07-12 Mark Rowe <opendarwin.org@bdash.net.nz> + 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. - Reviewed by ggaren. + 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. - Bug 9863: Drosera needs to show something at launch - http://bugs.webkit.org/show_bug.cgi?id=9863 + * Scripts/bugzilla-tool: + * Scripts/modules/scm.py: - * Drosera/DebuggerApplication.m: - (-[DebuggerApplication applicationDidFinishLaunching:]): Show the attach window on launch. +2009-07-01 Eric Seidel <eric@webkit.org> -2006-07-12 Mark Rowe <opendarwin.org@bdash.net.nz> + Reviewed by Maciej Stachowiak. - Reviewed by Timothy. + prepare-ChangeLog should have a --bug= argument and use it for url autofill + https://bugs.webkit.org/show_bug.cgi?id=26383 - 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. + 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. - * BuildSlaveSupport/build-launcher-app: - * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj: + * Scripts/prepare-ChangeLog: -2006-07-11 Alexey Proskuryakov <ap@nypop.com> +2009-07-01 Eric Seidel <eric@webkit.org> - Reviewed by Tim O. + Reviewed by Adam Roben. - - test for http://bugs.webkit.org/show_bug.cgi?id=7808 - Assertion failure in -[WebBaseNetscapePluginStream dealloc] when requesting an invalid URL + prepare-ChangeLog should fail when EMAIL_ADDRESS or REAL_NAME are missing: + https://bugs.webkit.org/show_bug.cgi?id=26692 - * 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. + I also made prepare-ChangeLog sanity-check names and email addresses a little. + Names must contain a space, and email addresses must contain '@' -2006-07-11 Timothy Hatcher <timothy@apple.com> + Also "fixed" $email_address to $emailAddress. This script uses mixed variable name styles. - Reviewed by Darin Adler. + * Scripts/prepare-ChangeLog: - 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> +2009-07-01 Chris Fleizach <cfleizach@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. + Bug 26900: AX: Manual spell check with Command-; does not bring up suggestions + https://bugs.webkit.org/show_bug.cgi?id=26900 - * 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 + Expose the ability to get the click point of an element through accessibility. - * 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: + * 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): -2006-07-02 Mark Rowe <opendarwin.org@bdash.net.nz> +2009-07-01 Mark Rowe <mrowe@apple.com> - Reviewed by Alexey Proskuryakov. + Reviewed by Simon Fraser. - Bug 9692: Warning about Safari extensions on every launch is obnoxious - http://bugs.webkit.org/show_bug.cgi?id=9692 + 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: - (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. + (poseAsWebKitApp): + (enableWebKitNightlyBehaviour): -2006-07-02 Mark Rowe <opendarwin.org@bdash.net.nz> +2009-07-01 Mark Rowe <mrowe@apple.com> - Reviewed by Timothy Hatcher. + Reviewed by Simon Fraser. - Bug 9689: Nightly builds should warn a user about potential problems when using - "Safari extensions" - http://bugs.webkit.org/show_bug.cgi?id=9689 + Shuffle some code around in preparation for a change to how poseAsWebKitApp works. - * 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 + (systemVersion): + (webKitLauncherBundle): + (insideSafari4OnTigerTrampoline): - Report screenY values as (height of zero screen - screenY) +2009-06-30 Xan Lopez <xlopez@igalia.com> - * DumpRenderTree/EventSendingController.m: (-[EventSendingController handleEvent:]): + Reviewed by Jan Alonzo. -2006-06-25 Timothy Hatcher <timothy@apple.com> + https://bugs.webkit.org/show_bug.cgi?id=26877 + [GTK] DRT fixes to pass new plugin test - Reviewed by Geoff. + Silence compiler warnings. - 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. + 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*'. - 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/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp: + (webkit_test_plugin_get_value): - * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree.suo: +2009-06-30 Xan Lopez <xlopez@igalia.com> -2006-02-22 Eric Seidel <eseidel@apple.com> + Reviewed by Jan Alonzo. - Reviewed by justing. + https://bugs.webkit.org/show_bug.cgi?id=26877 + [GTK] DRT fixes to pass new plugin test - Fixed build-dumprendertree to exit with correct error codes. + Use the common pluginLog function instead of a local copy. - * Scripts/build-dumprendertree: + * 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): -2006-02-22 Eric Seidel <eseidel@apple.com> +2009-06-30 Xan Lopez <xlopez@igalia.com> - Reviewed by justing. + Reviewed by Jan Alonzo. - Update build scripts to generalize building on Win32, and allow - building of DumpRenderTree on Win32 from build-dumprendertree. + https://bugs.webkit.org/show_bug.cgi?id=26877 + [GTK] DRT fixes to pass new plugin test - * DumpRenderTree/DumpRenderTree.vcproj/DumpRenderTree/DumpRenderTree.cpp: - (main): - * Scripts/build-dumprendertree: - * Scripts/build-webkit: - * Scripts/webkitdirs.pm: + 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. -2006-02-22 Eric Seidel <eseidel@apple.com> + * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp: + (webkit_test_plugin_new_instance): - Reviewed by hyatt. +2009-06-30 Adrien Nader <camaradetux@gmail.com> - * 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 + Reviewed by Jan Alonzo. -2006-02-22 Alexey Proskuryakov <ap@nypop.com> + [GTK] GtkLauncher depends on gtk+2-2.15 because of gtk_orientable_set_orientation() + https://bugs.webkit.org/show_bug.cgi?id=26835 - Reviewed by Darin Adler. + * GtkLauncher/main.c: + (create_toolbar): - - http://bugs.webkit.org/show_bug.cgi?id=7409 - Some minor fixes to http tests. +2009-06-30 Eric Seidel <eric@webkit.org> - * Scripts/run-webkit-tests: Pass CustomLog and ErrorLog directives to httpd. + Typo fix only, no review. -2006-02-21 Alexey Proskuryakov <ap@nypop.com> + Fix typo causing failure during land-diff - Reviewed by Darin Adler. + * Scripts/bugzilla-tool: - - http://bugs.webkit.org/show_bug.cgi?id=6197 - Would like to use locally installed Apache for testing. +2009-06-30 Simon Fraser <simon.fraser@apple.com> - Added two run-webkit-tests options: - --http (--nohttp) - whether to launch Apache (defaults to yes); - --port - which port to listen on (defaults to 8000). + 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. - 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. + * DumpRenderTree/mac/PixelDumpSupportMac.mm: + (createBitmapContextFromWebView): - Also added support for .shtml and .text files. Text files give an empty - *-expected.txt, but a correct image. +2009-06-30 Simon Fraser <simon.fraser@apple.com> - Apache only listens on the loopback interface. It writes logs to /tmp/WebKit. + Reviewed by Mark Rowe. - * Scripts/run-webkit-tests: + createBitmapContextFromWebView() incorrectly used #ifdef BUILDING_ON_LEOPARD, + and thus failed on SnowLeopard. + + * DumpRenderTree/mac/PixelDumpSupportMac.mm: + (createBitmapContextFromWebView): -2006-02-21 Darin Adler <darin@apple.com> +2009-06-30 Eric Seidel <eric@webkit.org> - Suggested by Mark Rowe. + Reviewed by Nikolas Zimmermann. - * Scripts/run-webkit-tests: Don't include the number of excluded leaks when - reporting leak counts. + Make bugzilla tool print a message explaining how to get help on failure: + https://bugs.webkit.org/show_bug.cgi?id=26861 -2006-02-18 Maciej Stachowiak <mjs@apple.com> + % bugzilla-tool + Usage: bugzilla-tool [options] command [command-options] [command-arguments] - Reviewed by Darin Adler. + bugzilla-tool: error: No command specified - - Added install-win-extras script which installs some extra - programs and libraries, and does Windows first-time setup. + Type 'bugzilla-tool --help' to see usage. - * Scripts/build-webkit: Add a newline between build results. - * Scripts/install-win-extras: Added. + * Scripts/bugzilla-tool: -2006-02-19 Alexey Proskuryakov <ap@nypop.com> +2009-06-30 Eric Seidel <eric@webkit.org> - Reviewed by Darin Adler. + Reviewed by Maciej Stachowiak. - - http://bugs.webkit.org/show_bug.cgi?id=7308 - DumpRenderTree should be able to load files via HTTP + 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 - * DumpRenderTree/DumpRenderTree.m: (dumpRenderTree): - Handle tests starting with "http://" as real URLs, not file system paths. + BeautifulSoup is BSD-licensed (thus WebKit compatible) and available from: + http://www.crummy.com/software/BeautifulSoup -2006-02-19 Alexey Proskuryakov <ap@nypop.com> + * Scripts/bugzilla-tool: fixed a typo in a log message. + * Scripts/modules/BeautifulSoup.py: Added. + * Scripts/modules/bugzilla.py: - Reviewed by Maciej. +2009-06-30 Eric Seidel <eric@webkit.org> - - fix http://bugs.webkit.org/show_bug.cgi?id=7357 - REGRESSION: Warnings from WebKit scripts if PBXProductDirectory is undefined + Reviewed by Simon Hausmann. - * Scripts/webkitdirs.pm: only call chomp if PBXProductDirectory is configured. + Fix our create_patch handling to not + hang when creating large patches. + https://bugs.webkit.org/show_bug.cgi?id=26834 -2006-02-18 Darin Adler <darin@apple.com> + 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/commit-log-editor: Added. + * Scripts/modules/scm.py: -2006-02-17 Eric Seidel <eseidel@apple.com> +2009-06-29 Sam Weinig <sam@webkit.org> - Reviewed by hyatt. + Reviewed by Mark Rowe. - Make Win32 have the same default "WebKitBuild" directory behavior. + Remove more unused scons support. + * Scripts/build-jsc: * 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> +2009-06-26 Eric Seidel <eric@webkit.org> - Reviewed by mjs. + Reviewed by David Levin. - 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. + Rename land-and-update to land-diff and make it awesome. + https://bugs.webkit.org/show_bug.cgi?id=26734 - (+[NavigationController isSelectorExcludedFromWebScript:]): - (+[NavigationController webScriptNameForSelector:]): - (-[NavigationController setPendingScript:]): - (-[NavigationController setPendingRequest:]): - (-[NavigationController evaluateWebScript:afterBackForwardNavigation:]): - (-[NavigationController webView:didFinishLoadForFrame:]): - (-[NavigationController dealloc]): + Renamed land-and-update to land-diff + Made the BUGID argument optional. + Added optional support for building and testing before landing. -2006-01-08 Timothy Hatcher <timothy@apple.com> + 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. - Removed this script, no longer needs with the Subversion switch. + * Scripts/bugzilla-tool: - * checkout: Removed. +2009-06-28 Jan Michael Alonzo <jmalonzo@webkit.org> -2006-01-08 Timothy Hatcher <timothy@apple.com> + Gtk build fix - include stdarg.h for va_start/va_end. - 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> + * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: - Reviewed by darin. +2009-06-28 John Abd-El-Malek <jam@chromium.org> - - Fixed http://bugs.webkit.org/show_bug.cgi?id=6361 - Add plugin support to DumpRenderTree + https://bugs.webkit.org/show_bug.cgi?id=15457 - Also wrote first test plugin. + Modify NPAPI test plugin to verify that "src" paramater is added when + it's missing but "data" is present. - * 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): + * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: + (pluginLog): + * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: + * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp: (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 + (handleEventCarbon): + (handleEventCocoa): + * DumpRenderTree/win/TestNetscapePlugin/main.cpp: + (NPP_New): - * Scripts/cvs-create-patch: Handle newly-added directories using chdir. +2009-06-27 Emilio Pozuelo Monfort <pochu27@gmail.com> -2005-12-19 Eric Seidel <eseidel@apple.com> + Reviewed by Jan Alonzo. - Reviewed by darin. + [GTK] Don't use deprecated GTK+ symbols. + https://bugs.webkit.org/show_bug.cgi?id=26583 - * Scripts/run-webkit-tests: stop /etc/catalog warnings + * GtkLauncher/main.c: + (create_toolbar): -2005-12-19 Darin Adler <darin@apple.com> +2009-06-26 Adam Barth <abarth@webkit.org> 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) + Make SVN work (again?). - * Scripts/build-webkit: remove SVGSupport - * Scripts/run-webkit-tests: Resources -> resources for --svg - * Scripts/update-webkit: remove SVGSupport + * Scripts/modules/scm.py: -2005-12-05 Eric Seidel <eseidel@apple.com> +2009-06-26 Chris Fleizach <cfleizach@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. + Reviewed by Oliver Hunt. -2005-11-03 John Sullivan <sullivan@apple.com> + Add ability to query isEnabled - Reviewed by Darin Adler. + * DumpRenderTree/AccessibilityUIElement.cpp: + (getIsEnabledCallback): + (AccessibilityUIElement::getJSClass): + * DumpRenderTree/AccessibilityUIElement.h: + * DumpRenderTree/mac/AccessibilityUIElementMac.mm: + (AccessibilityUIElement::isEnabled): + * DumpRenderTree/win/AccessibilityUIElementWin.cpp: + (AccessibilityUIElement::isEnabled): - * 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. +2009-06-26 Brady Eidson <beidson@apple.com> -2005-10-27 Geoffrey Garen <ggaren@apple.com> + Reviewed by Sam Weinig - Patch by Alexey Proskuryakov. + <rdar://problem/6961578> REGRESSION (r43511): Opening .fdf files from Acrobat Professional fails - Reviewed by Maciej. + Add a dumpResourceResponseMIMETypes() mode so the ResourceLoadDelegate will dump the mime type from + the NSURLResponse. Needed for the test for this bug fix. - Fixes http://bugs.webkit.org/show_bug.cgi?id=5303 - TextInputController should support attributed strings + * DumpRenderTree/LayoutTestController.cpp: + (LayoutTestController::LayoutTestController): + (dumpResourceResponseMIMETypesCallback): + (LayoutTestController::staticFunctions): + * DumpRenderTree/LayoutTestController.h: + (LayoutTestController::dumpResourceResponseMIMETypes): + (LayoutTestController::setDumpResourceResponseMIMETypes): - * 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:]): + * DumpRenderTree/mac/ResourceLoadDelegate.mm: + (-[ResourceLoadDelegate webView:resource:didReceiveResponse:fromDataSource:]): -2005-10-11 Eric Seidel <eseidel@apple.com> +2009-06-26 David Kilzer <ddkilzer@apple.com> - Reviewed by hyatt. + Update build-dumprendertree to use buildXCodeProject() - Checks for leaks in ImageDiff too. + Reviewed by Adam Roben. - * Scripts/run-webkit-tests: + * 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. -2005-10-09 Darin Adler <darin@apple.com> +2009-06-26 Eric Seidel <eric@webkit.org> - * 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. + Reviewed by Tor Arne Vestbø. -2005-10-08 Alexey Proskuryakov <ap@nypop.com> + 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. - Reviewed, rearranged and landed by Darin Adler. + Also updated git diff command to include staged modifications. - - fixed http://bugs.webkit.org/show_bug.cgi?id=4707 - Need a way to automatically test for regressions in NSTextInput implementation + * Scripts/bugzilla-tool: + * Scripts/modules/scm.py: - * DumpRenderTree/DumpRenderTree.m: - (-[WaitUntilDoneDelegate webView:windowScriptObjectAvailable:]): - Create a text input controller and put it in a property of the window object. +2009-06-25 Eric Seidel <eric@webkit.org> - * DumpRenderTree/TextInputController.h: Added. - * DumpRenderTree/TextInputController.m: Added. - * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added files. + Reviewed by Jan Alonzo. -2005-10-06 Darin Adler <darin@apple.com> + Fix obsolete_attachment to work when passed a comment. + https://bugs.webkit.org/show_bug.cgi?id=26745 - * 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. + * Scripts/modules/bugzilla.py: -2005-10-03 Eric Seidel <eseidel@apple.com> +2009-06-25 Jan Michael Alonzo <jmalonzo@webkit.org> - Reviewed by mjs. + Reviewed by Mark Rowe. - Make mouseDown and mouseUp force layout before acting. - This is used by a new test case for 4233558. + bugzilla-tool apply-patch throws exception in Linux + https://bugs.webkit.org/show_bug.cgi?id=26738 - * DumpRenderTree/DumpRenderTree.m: - (-[EventSendingController mouseDown]): force layout - (-[EventSendingController mouseUp]): force layout + HEAD is case-sensitive in Linux. Convert uses of head to HEAD in + the scm module. -2005-09-30 Eric Seidel <eseidel@apple.com> + * Scripts/modules/scm.py: - Reviewed by xenon. +2009-06-25 Eric Seidel <eric@webkit.org> - Updated all the scripts for the move: - WebCore/layout-tests -> LayoutTests + Reviewed by Jan Alonzo. - * Scripts/check-dom-results: - * Scripts/prepare-ChangeLog: - * Scripts/run-webkit-tests: - * Scripts/update-webkit: added --no-tests - * checkout: added --no-tests + bugzilla-tool post-diff needs to obsolete old patches before posting + https://bugs.webkit.org/show_bug.cgi?id=26740 -2005-09-28 Darin Adler <darin@apple.com> + 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! - - fixed http://bugs.webkit.org/show_bug.cgi?id=5144 - pixel test should run even if render trees differ + * Scripts/bugzilla-tool: + * Scripts/modules/bugzilla.py: - * Scripts/run-webkit-tests: Don't check if the text dump matches. +2009-06-25 Eric Seidel <eric@webkit.org> -2005-09-27 Eric Seidel <eseidel@apple.com> + Reviewed by Mark Rowe. - No review needed, SVG build fix only. + Call WebKitTools/Scripts scripts by their absolute paths + https://bugs.webkit.org/show_bug.cgi?id=26704 - * DumpKCanvasTree/DumpKCanvasTree.m: - Missed one in my previous checkin. - http://bugs.webkit.org/show_bug.cgi?id=5141 + bugzilla-tool used to use whatever build-webkit was in your path. + That could end up building the wrong copy of WebKit. -2005-09-26 Eric Seidel <eseidel@apple.com> + * Scripts/bugzilla-tool: + * Scripts/modules/scm.py: - No review needed, SVG build fix only. +2009-06-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - * 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 + Reviewed by Dave Levin. -2005-09-26 Eric Seidel <eseidel@apple.com> + 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 - Reviewed by hyatt. + * Scripts/modules/bugzilla.py: - * 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 +2009-06-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> -2005-09-22 Duncan Wilcox <duncan@mclink.it> + Reviewed by Simon Hausmann. - Reviewed by Maciej. - Landed by Darin Adler. + 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 - - patch for <http://bugs.webkit.org/show_bug.cgi?id=4963> - "Would like to simulate human interaction with webview" + * DumpRenderTree/qt/WorkQueue.cpp: + (WorkQueue::queue): + (WorkQueue::dequeue): - * 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. +2009-06-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> - * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: - link with Carbon.framework + Reviewed by Jan Alonzo. -2005-09-22 Eric Seidel <eseidel@apple.com> + bugzilla-tool: Add Simon Hausmann as reviewer - Reviewed by mjs. + * Scripts/modules/bugzilla.py: - 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 +2009-06-24 Eric Seidel <eric@webkit.org> - * 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. + Reviewed by Dave Levin. -2005-09-19 Eric Seidel <eseidel@apple.com> + Support local commits during apply-patches + and let land-patches take multiple bug ids. + https://bugs.webkit.org/show_bug.cgi?id=26703 - Reviewed by darin. + I also restructured parts of land-patches into + class methods and static methods in preparation + for future code sharing with other commands. - * Scripts/run-webkit-tests: added --guard-malloc option - http://bugs.webkit.org/show_bug.cgi?id=4613 + * Scripts/bugzilla-tool: + * Scripts/modules/bugzilla.py: + * Scripts/modules/scm.py: -2005-09-16 Justin Garcia <justin.garcia@apple.com> +2009-06-25 Eric Seidel <eric@webkit.org> - Reviewed by geoff + Reviewed by Tor Arne Vestbø. - Removed a script that is only used by apple internal developers + 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 - * Scripts/update-webkitsysteminterface: Removed. + 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. -2005-09-16 Adele Peterson <adele@apple.com> + * Scripts/svn-apply: - Reviewed by Maciej. +2009-06-25 Eric Seidel <eric@webkit.org> - * Scripts/prepare-ChangeLog: Allow semicolons for protocols too. + Reviewed by Tor Arne Vestbø. -2005-09-14 Darin Adler <darin@apple.com> + Remove use of os.system to fix reviewers with unicode chars in their names + https://bugs.webkit.org/show_bug.cgi?id=26713 - - fixed http://bugs.webkit.org/show_bug.cgi?id=4291 - dumpAsText doesn't work with XHTML documents + Also change to latin1 encoding of ø to make python happy. - * 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. + * Scripts/modules/bugzilla.py: + * Scripts/modules/scm.py: - - separate tweak +2009-06-25 Eric Seidel <eric@webkit.org> - * 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. + Reviewed by Tor Arne Vestbø. -2005-09-11 Mark Rowe <opendarwin.org@bdash.net.nz> + Add Adam Roben and Tor Arne Vestbø to the reviewers list. - Reviewed, tweaked, and landed by Darin Adler. + * Scripts/modules/bugzilla.py: - - fixed http://bugs.webkit.org/show_bug.cgi?id=4286 - .Mac prefpane crashes when Safari using CVS WebKit is running +2009-06-24 Chris Fleizach <cfleizach@apple.com> - * Scripts/run-safari: Set WEBKIT_UNSET_DYLD_FRAMEWORK_PATH. - * Scripts/run-webkit-app: Ditto. + Windows build fix. -2005-09-11 Darin Adler <darin@apple.com> + * DumpRenderTree/win/AccessibilityUIElementWin.cpp: + (AccessibilityUIElement::language): - * Scripts/run-webkit-tests: Oops. Use spaces, not tabs. +2009-06-24 Chris Fleizach <cfleizach@apple.com> -2005-09-11 Darin Adler <darin@apple.com> + Reviewed by Oliver Hunt. - Reviewed by Eric. + Bug 26668: AX: need a way to retrieve the language for an element + Support ability to retrieve AXLanguage for testing - * 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. + * DumpRenderTree/AccessibilityUIElement.cpp: + (getLanguageCallback): + (AccessibilityUIElement::getJSClass): + * DumpRenderTree/AccessibilityUIElement.h: + * DumpRenderTree/mac/AccessibilityUIElementMac.mm: + (AccessibilityUIElement::language): -2005-09-08 Justin Garcia <justin.garcia@apple.com> +2009-06-24 Eric Seidel <eric@webkit.org> - Reviewed by darin + Reviewed by Maciej Stachowiak. + + Spell Maciej's name right and add Brady Eidson. - * Scripts/update-webkitsysteminterface: Added. - Builds webkitsysteminterface and moves the built product and header into WebKitLibraries + * Scripts/modules/bugzilla.py: -2005-09-01 John Sullivan <sullivan@apple.com> +2009-06-23 Eric Seidel <eric@webkit.org> - * Scripts/run-webkit-tests: - Excluded a known system leak to reduce noise; added comments about which leaks - are being excluded. + Reviewed by Dave Levin. -2005-09-01 Tim Omernick <tomernick@apple.com> + Fix missing comment message during land-patches and SVN.commit_with_message respecting --dry-run + https://bugs.webkit.org/show_bug.cgi?id=26669 - Change made by Darin, reviewed by John and myself. + * Scripts/bugzilla-tool: + * Scripts/modules/scm.py: - - Allow semicolons at the end of method declarations (this is for method implementations; the semicolon is required for interface declarations). +2009-06-23 Takeshi Yoshino <tyoshino@google.com> - * Scripts/prepare-ChangeLog: + Reviewed by Mark Rowe. -2005-08-31 Maciej Stachowiak <mjs@apple.com> + 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 - Reviewed by Darin Adler. + 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>). - - set color variant and font settings to a consistent value. - (http://bugs.webkit.org/show_bug.cgi?id=4769) + * Scripts/webkitdirs.pm: - * DumpRenderTree/DumpRenderTree.m: - (main): +2009-06-23 Eric Seidel <eric@webkit.org> -2005-08-30 Eric Seidel <eseidel@apple.com> + Reviewed by Dave Levin. - Reviewed by mjs. + 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 - * 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. + 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. -2005-08-30 Darin Adler <darin@apple.com> + * Scripts/modules/scm.py: - * 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. +2009-06-23 Joe Mason <joe.mason@torchmobile.com> -2005-08-30 Darin Adler <darin@apple.com> + Reviewed by Adam Treat. - * Scripts/run-webkit-tests: Small formatting fix for leaks mode. + 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. -2005-08-29 Maciej Stachowiak <mjs@apple.com> +2009-06-23 Anders Carlsson <andersca@apple.com> Reviewed by Darin Adler. + + Update for WebKit changes. + + * DumpRenderTree/win/UIDelegate.h: + (UIDelegate::willPerformDragSourceAction): - - 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> +2009-06-23 Eric Seidel <eric@webkit.org> - Reviewed by mjs. + Reviewed by Mark Rowe. - * Scripts/run-webkit-tests: - Made --leaks option more readable by printing to a file. - http://bugs.webkit.org/show_bug.cgi?id=4590 + * Scripts/modules/scm.py: Fix commit_with_message to return the commit output. -2005-08-22 Eric Seidel <eseidel@apple.com> - Fix by Tobias Lidskog <tobiaslidskog@mac.com> +2009-06-23 Eric Seidel <eric@webkit.org> - Reviewed by darin. + Reviewed by Mark Rowe. - * 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 + * Scripts/modules/scm.py: Fix error seen when commiting r44979. -2005-08-22 Eric Seidel <eseidel@apple.com> +2009-06-18 Eric Seidel <eric@webkit.org> - Reviewed by darin. + Reviewed by Dave Levin. - * 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 + 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 -2005-08-20 Eric Seidel <eseidel@apple.com> + 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. - * Scripts/run-webkit-tests: - "build" fix after committing incorrect version. + This tool requires BeautifulSoup and mechanize python modules to run: + sudo easy_install BeautifulSoup + sudo easy_install mechanize -2005-08-20 Eric Seidel <eseidel@apple.com> + More important than the tool itself are the Bugzilla, Git and SVN class abstractions + which I hope will allow easy writing of future tools. - Reviewed by darin. + The tool currently implements 10 commands, described below. - * 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 + 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 -2005-08-19 Ben La Monica <ben.lamonica@gmail.com> + 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. - Reviewed by Darin Adler. + 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. - * Scripts/cvs-create-patch: Add an --include-unknowns option that will cause - new files to be included in the patch even without "cvs add". + post-diff works for SVN and Git, post-commits only works for SCMs with local-commit support (like Git) -2005-08-19 Darin Adler <darin@apple.com> + 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 - * 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. + 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. -2005-08-18 Darin Adler <darin@apple.com> + I've filed a bug to update the WebKit style guide to mention python: + https://bugs.webkit.org/show_bug.cgi?id=26524 - * Scripts/webkitdirs.pm: Fix version checking to work on Xcode versions with - "." in them -- based on complaint by someone here at Apple. + * Scripts/bugzilla-tool: Added. -2005-08-18 Eric Seidel <eseidel@apple.com> +2009-06-22 Steve Falkenburg <sfalken@apple.com> - Reviewed by mjs. + Remove errant line of code mistakenly checked in. - * Scripts/run-webkit-tests: - Made --svg imply --pixel-tests (pixel tests on-by-default for svg). + * DumpRenderTree/win/DumpRenderTree.cpp: + (main): -2005-08-17 Maciej Stachowiak <mjs@apple.com> +2009-06-22 Steve Falkenburg <sfalken@apple.com> - - add file that I forgot in the last checkin + Pass correct value to setShouldPaintNativeControls. + + Rubber stamped by Mark Rowe. - * DumpRenderTree/ImageDiff.m: Added. + * DumpRenderTree/win/DumpRenderTree.cpp: (main): - (getImageFromStdin): - (compareImages): - (getDifferenceBitmap): - (computePercentageDifferent): -2005-08-17 Maciej Stachowiak <mjs@apple.com> +2009-06-22 Steve Falkenburg <sfalken@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 + Fix last DumpRenderTree change to correctly set preferences flag without crashing. + + Reviewed by Mark Rowe. - * DumpKCanvasTree/DumpKCanvasTree.m: - (main): - (dumpRenderTree): - (md5HashStringForBitmap): - (dumpPixelTests): - (constrainSizeToMaximum): - (getBitmapImageRepForSVGDocument): - * DumpKCanvasTree/DumpKCanvasTree.xcodeproj/project.pbxproj: - * DumpRenderTree/DumpRenderTree.m: + * DumpRenderTree/win/DumpRenderTree.cpp: (main): - (dump): - (dumpRenderTree): - (md5HashStringForBitmap): - * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: - * Scripts/run-webkit-tests: -2005-08-17 Maciej Stachowiak <mjs@apple.com> +2009-06-21 Steve Falkenburg <sfalken@apple.com> + Set up global native controls flag before creating the first WebView. + Reviewed by Darin Adler. - - hacked DumpRenderTree to make the scrollbars appear and disappear properly. - - * DumpRenderTree/DumpRenderTree.m: + * DumpRenderTree/win/DumpRenderTree.cpp: (main): -2005-08-14 Oliver Hunt <ojh16@student.canterbury.ac.nz> - - Reviewed and landed by Darin Adler. +2009-06-21 Mark Rowe <mrowe@apple.com> - - 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 Sam Weinig. - Reviewed by darin. + Set a sensible user agent string for the HTTP requests that Sparkle makes (checking for and downloading updates). - * 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 + * WebKitLauncher/WebKitNightlyEnablerSparkle.m: + (userAgentStringForSparkle): + (initializeSparkle): -2005-08-07 Eric Seidel <eseidel@apple.com> +2009-06-21 Mark Rowe <mrowe@apple.com> - Reviewed by darin. + Reviewed by Sam Weinig. - * 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 + 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. -2005-08-07 Darin Adler <darin@apple.com> + * 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. - * Scripts/cvs-create-patch: Do all the directories at once, for speed. +2009-06-20 Jan Michael Alonzo <jmalonzo@webkit.org> -2005-08-06 Eric Seidel <eseidel@apple.com> + Reviewed by Gustavo Noronha and Xan Lopez. - Reviewed by darin. + [Gtk] Implement DRT XSS auditor support + https://bugs.webkit.org/show_bug.cgi?id=26571 - * 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 + * DumpRenderTree/gtk/DumpRenderTree.cpp: + (resetWebViewToConsistentStateBeforeTesting): + * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: + (LayoutTestController::setXSSAuditorEnabled): -2005-08-06 Eric Seidel <eseidel@apple.com> +2009-06-19 Darin Adler <darin@apple.com> - Reviewed by darin. + * Scripts/do-webcore-rename: More renaming ideas. - * DrawTest/DrawTestView.m: - (-[DrawTestView toggleFilterSupport:]): missing negation. - One half of fix for toggling filter support. - http://bugs.webkit.org/show_bug.cgi?id=4252 +2009-06-15 Andre Pedralho <andre.pedralho@openbossa.org> -2005-08-04 Eric Seidel <eseidel@apple.com> + Reviewed by Tor Arne Vestbø. - Reviewed by darin. + Only pass --makeargs along if an argument is given. - * 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 +2009-06-19 Adam Barth <abarth@webkit.org> - * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Moved options from target to - project as a whole. Removed unused Default configuration. + Unreviewed attempt to fix Windows build. - * 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. + * DumpRenderTree/win/DumpRenderTree.cpp: + (resetWebViewToConsistentStateBeforeTesting): + * DumpRenderTree/win/LayoutTestControllerWin.cpp: + (LayoutTestController::setXSSAuditorEnabled): - Add logging of editing delegate calls for regression checking. +2009-06-18 Adam Barth <abarth@webkit.org> - * DumpRenderTree/DumpRenderTree.m: - (main): - setup editing delegate + Reviewed by Sam Weinig. - (-[DOMNode dumpPath]): - (-[DOMRange dump]): - utility for editing delegate logging + https://bugs.webkit.org/show_bug.cgi?id=26199 - (-[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 + Add support for testing the XSSAuditor. - (-[EditingDelegate webViewDidChangeSelection:]): - log selection except when clearing selection after end of test (uses existing "done" flag) + * 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): - (dumpRenderTree): - added clearing of selection after test +2009-06-18 Darin Adler <darin@apple.com> -2005-07-31 Eric Seidel <eseidel@apple.com> + Rubber stamped by Mark Rowe. - Reviewed by hyatt. + * 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. - * 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 +2009-06-17 Steve Falkenburg <sfalken@apple.com> -2005-07-29 Eric Seidel <eseidel@apple.com> + Updated for consolidated WebKit COM interfaces. + + Reviewed by Adam Roben. - Reviewed by vicki. + * DumpRenderTree/win/FrameLoadDelegate.cpp: + * DumpRenderTree/win/FrameLoadDelegate.h: + * DumpRenderTree/win/UIDelegate.cpp: + * DumpRenderTree/win/UIDelegate.h: + * WinLauncher/WinLauncher.h: - * 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> +2009-06-16 Adam Barth <abarth@webkit.org> 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. + https://bugs.webkit.org/show_bug.cgi?id=26437 - * Scripts/gdb-safari: Use safariPath. - * Scripts/run-safari: Use safariPath. + Make the commit-log-editor match the ambient line endings in commit + messages. -2005-07-22 Geoffrey Garen <ggaren@apple.com> + * Scripts/commit-log-editor: - Moved Tools/Scripts/run-mozilla-tests to WebKitTools/Scripts/run-javascriptcore-tests. - run-javascriptcore-tests now passes its command-line arguments to jsDriver.pl +2009-06-16 Xan Lopez <xlopez@igalia.com> - Moved Tools/Scripts/update-mozilla-js-test-results to - WebKitTools/Scripts/update-javascriptcore-test-results. + Reviewed by Gustavo Noronha. - Reviewed by darin. + Update GtkLauncher to recent API changes in the progress property, + which now goes from 0.0 to 1.0. - * Scripts/run-javascriptcore-tests: Added. + * GtkLauncher/main.c: -2005-07-21 Geoffrey Garen <ggaren@apple.com> +2009-06-16 Adam Barth <abarth@webkit.org> 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. + https://bugs.webkit.org/show_bug.cgi?id=26000 -2005-06-12 Darin Adler <darin@apple.com> + 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. - Changes by Michael Gaiman. - Reviewed by me. + Also, teach prepare-ChangeLog to normalize backslashes in paths. This + helps folks who use Windows SVN prepare correct ChangeLogs. - - 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. + * Scripts/prepare-ChangeLog: -=== creation of WebKitTools module === +== Rolled over to ChangeLog-2009-06-16 == diff --git a/WebKitTools/ChangeLog-2009-06-16 b/WebKitTools/ChangeLog-2009-06-16 new file mode 100644 index 0000000..534b2e6 --- /dev/null +++ b/WebKitTools/ChangeLog-2009-06-16 @@ -0,0 +1,25221 @@ +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/WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj b/WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj index 9bafb2a..cb6a265 100644 --- a/WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj +++ b/WebKitTools/DrawTest/DrawTest.xcodeproj/project.pbxproj @@ -248,11 +248,11 @@ A8C006D40898634600BA5114 /* DrawTestInspectorController.m in Sources */, A8C006D30898634600BA5114 /* DrawTestToolbarController.m in Sources */, A8C006D20898634600BA5114 /* DrawTestView.m in Sources */, - A8C006CF0898634600BA5114 /* SVGTest.m in Sources */, + 8D11072D0486CEB800E47090 /* main.m in Sources */, A8C006D00898634600BA5114 /* ScalingImageView.m in Sources */, + A8C006CF0898634600BA5114 /* SVGTest.m in Sources */, A8C006E30898634600BA5114 /* TestController.m in Sources */, A8C006E20898634600BA5114 /* TestViewerSplitView.m in Sources */, - 8D11072D0486CEB800E47090 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/WebKitTools/DumpRenderTree/AccessibilityController.cpp b/WebKitTools/DumpRenderTree/AccessibilityController.cpp index d2ed2a6..6556f91 100644 --- a/WebKitTools/DumpRenderTree/AccessibilityController.cpp +++ b/WebKitTools/DumpRenderTree/AccessibilityController.cpp @@ -33,13 +33,13 @@ static JSValueRef getFocusedElementCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { - AccessibilityController* controller = reinterpret_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject)); + AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject)); return AccessibilityUIElement::makeJSAccessibilityUIElement(context, controller->focusedElement()); } static JSValueRef getRootElementCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { - AccessibilityController* controller = reinterpret_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject)); + AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject)); return AccessibilityUIElement::makeJSAccessibilityUIElement(context, controller->rootElement()); } diff --git a/WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp b/WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp index c3f8867..8a92766 100644 --- a/WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp +++ b/WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp @@ -30,10 +30,10 @@ // Static Functions -static AccessibilityUIElement* toAXElement(JSObjectRef object) +static inline AccessibilityUIElement* toAXElement(JSObjectRef object) { // FIXME: We should ASSERT that it is the right class here. - return reinterpret_cast<AccessibilityUIElement*>(JSObjectGetPrivate(object)); + return static_cast<AccessibilityUIElement*>(JSObjectGetPrivate(object)); } static JSValueRef allAttributesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) @@ -149,6 +149,19 @@ static JSValueRef childAtIndexCallback(JSContextRef context, JSObjectRef functio return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->getChildAtIndex(indexNumber)); } +static JSValueRef elementAtPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + int x = 0; + int y = 0; + if (argumentCount == 2) { + x = JSValueToNumber(context, arguments[0], exception); + y = JSValueToNumber(context, arguments[1], exception); + } + + return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->elementAtPoint(x, y)); +} + + static JSValueRef isAttributeSettableCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { JSStringRef attribute = NULL; @@ -160,6 +173,18 @@ static JSValueRef isAttributeSettableCallback(JSContextRef context, JSObjectRef return result; } + +static JSValueRef isActionSupportedCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + JSStringRef action = 0; + if (argumentCount == 1) + action = JSValueToStringCopy(context, arguments[0], exception); + JSValueRef result = JSValueMakeNumber(context, toAXElement(thisObject)->isActionSupported(action)); + if (action) + JSStringRelease(action); + return result; +} + static JSValueRef attributeValueCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { JSStringRef attribute = NULL; @@ -204,6 +229,19 @@ static JSValueRef setSelectedTextRangeCallback(JSContextRef context, JSObjectRef return 0; } +static JSValueRef incrementCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + toAXElement(thisObject)->increment(); + return 0; +} + +static JSValueRef decrementCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + toAXElement(thisObject)->decrement(); + return 0; +} + + // Static Value Getters static JSValueRef getRoleCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) @@ -224,6 +262,27 @@ static JSValueRef getDescriptionCallback(JSContextRef context, JSObjectRef thisO return JSValueMakeString(context, description.get()); } +static JSValueRef getLanguageCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + JSRetainPtr<JSStringRef> language(Adopt, toAXElement(thisObject)->language()); + return JSValueMakeString(context, language.get()); +} + +static JSValueRef getChildrenCountCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + return JSValueMakeNumber(context, toAXElement(thisObject)->childrenCount()); +} + +static JSValueRef getXCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + return JSValueMakeNumber(context, toAXElement(thisObject)->x()); +} + +static JSValueRef getYCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + return JSValueMakeNumber(context, toAXElement(thisObject)->y()); +} + static JSValueRef getWidthCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { return JSValueMakeNumber(context, toAXElement(thisObject)->width()); @@ -234,6 +293,16 @@ static JSValueRef getHeightCallback(JSContextRef context, JSObjectRef thisObject return JSValueMakeNumber(context, toAXElement(thisObject)->height()); } +static JSValueRef getClickPointXCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + return JSValueMakeNumber(context, toAXElement(thisObject)->clickPointX()); +} + +static JSValueRef getClickPointYCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + return JSValueMakeNumber(context, toAXElement(thisObject)->clickPointY()); +} + static JSValueRef getIntValueCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { return JSValueMakeNumber(context, toAXElement(thisObject)->intValue()); @@ -260,9 +329,20 @@ static JSValueRef getSelectedTextRangeCallback(JSContextRef context, JSObjectRef return JSValueMakeString(context, selectedTextRange.get()); } -static JSValueRef getSupportsPressActionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +static JSValueRef getIsEnabledCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) +{ + return JSValueMakeBoolean(context, toAXElement(thisObject)->isEnabled()); +} + +static JSValueRef getIsRequiredCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*) +{ + return JSValueMakeBoolean(context, toAXElement(thisObject)->isRequired()); +} + +static JSValueRef getValueDescriptionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { - return JSValueMakeBoolean(context, toAXElement(thisObject)->supportsPressAction()); + JSRetainPtr<JSStringRef> valueDescription(Adopt, toAXElement(thisObject)->valueDescription()); + return JSValueMakeString(context, valueDescription.get()); } // Destruction @@ -285,14 +365,22 @@ JSClassRef AccessibilityUIElement::getJSClass() { "role", getRoleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "title", getTitleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "description", getDescriptionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "language", getLanguageCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "x", getXCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "y", getYCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "width", getWidthCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "height", getHeightCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "clickPointX", getClickPointXCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "clickPointY", getClickPointYCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "intValue", getIntValueCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "minValue", getMinValueCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "maxValue", getMaxValueCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "childrenCount", getChildrenCountCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "insertionPointLineNumber", getInsertionPointLineNumberCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "selectedTextRange", getSelectedTextRangeCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "supportsPressAction", getSupportsPressActionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "isEnabled", getIsEnabledCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "isRequired", getIsRequiredCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "valueDescription", getValueDescriptionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { 0, 0, 0, 0 } }; @@ -305,6 +393,7 @@ JSClassRef AccessibilityUIElement::getJSClass() { "lineForIndex", lineForIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "boundsForRange", boundsForRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "childAtIndex", childAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "elementAtPoint", elementAtPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "attributesOfColumnHeaders", attributesOfColumnHeadersCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "attributesOfRowHeaders", attributesOfRowHeadersCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "attributesOfColumns", attributesOfColumnsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, @@ -319,7 +408,10 @@ JSClassRef AccessibilityUIElement::getJSClass() { "setSelectedTextRange", setSelectedTextRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "attributeValue", attributeValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "isAttributeSettable", isAttributeSettableCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "isActionSupported", isActionSupportedCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "parentElement", parentElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "increment", incrementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "decrement", decrementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { 0, 0, 0 } }; diff --git a/WebKitTools/DumpRenderTree/AccessibilityUIElement.h b/WebKitTools/DumpRenderTree/AccessibilityUIElement.h index a7b4c8c..d0b63c3 100644 --- a/WebKitTools/DumpRenderTree/AccessibilityUIElement.h +++ b/WebKitTools/DumpRenderTree/AccessibilityUIElement.h @@ -27,6 +27,7 @@ #define AccessibilityUIElement_h #include <JavaScriptCore/JSObjectRef.h> +#include <wtf/Platform.h> #include <wtf/Vector.h> #if PLATFORM(MAC) @@ -43,6 +44,9 @@ typedef struct objc_object* PlatformUIElement; #include <WebCore/COMPtr.h> typedef COMPtr<IAccessible> PlatformUIElement; +#elif PLATFORM(GTK) +#include <atk/atk.h> +typedef AtkObject* PlatformUIElement; #else typedef void* PlatformUIElement; #endif @@ -62,7 +66,9 @@ public: void getChildren(Vector<AccessibilityUIElement>&); void getChildrenWithRange(Vector<AccessibilityUIElement>&, unsigned location, unsigned length); + AccessibilityUIElement elementAtPoint(int x, int y); AccessibilityUIElement getChildAtIndex(unsigned); + int childrenCount(); AccessibilityUIElement titleUIElement(); AccessibilityUIElement parentElement(); @@ -72,21 +78,31 @@ public: JSStringRef attributesOfDocumentLinks(); JSStringRef attributesOfChildren(); JSStringRef parameterizedAttributeNames(); - + void increment(); + void decrement(); + // Attributes - platform-independent implementations JSStringRef attributeValue(JSStringRef attribute); bool isAttributeSettable(JSStringRef attribute); + bool isActionSupported(JSStringRef action); JSStringRef role(); JSStringRef title(); JSStringRef description(); + JSStringRef language(); + double x(); + double y(); double width(); double height(); double intValue(); double minValue(); double maxValue(); + JSStringRef valueDescription(); int insertionPointLineNumber(); JSStringRef selectedTextRange(); - bool supportsPressAction(); + bool isEnabled(); + bool isRequired() const; + double clickPointX(); + double clickPointY(); // Table-specific attributes JSStringRef attributesOfColumnHeaders(); @@ -106,7 +122,7 @@ public: // Table-specific AccessibilityUIElement cellForColumnAndRow(unsigned column, unsigned row); - + private: static JSClassRef getJSClass(); diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.h b/WebKitTools/DumpRenderTree/DumpRenderTree.h index 72c2c09..c11c5f6 100644 --- a/WebKitTools/DumpRenderTree/DumpRenderTree.h +++ b/WebKitTools/DumpRenderTree/DumpRenderTree.h @@ -40,6 +40,8 @@ #include "DumpRenderTreeWin.h" #elif PLATFORM(GTK) #include "DumpRenderTreeGtk.h" +#elif PLATFORM(WX) +#include "DumpRenderTreeWx.h" #endif #include <string> diff --git a/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj b/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj index 249a647..fd2c0d9 100644 --- a/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj +++ b/WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ A84F609108B1370E00E9745F /* PBXTargetDependency */, A84F608F08B1370E00E9745F /* PBXTargetDependency */, 141BF238096A451E00E0753C /* PBXTargetDependency */, + 5DC82A701023C93D00FD1D3B /* PBXTargetDependency */, ); name = All; productName = All; @@ -44,6 +45,9 @@ 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 */; }; + 8465E2C70FFA8DF2003B8342 /* PixelDumpSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8465E2C60FFA8DF2003B8342 /* PixelDumpSupport.cpp */; }; + 933BF5AB0F93FA5C000F0441 /* PlainTextController.h in Headers */ = {isa = PBXBuildFile; fileRef = 933BF5A90F93FA5C000F0441 /* PlainTextController.h */; }; + 933BF5AC0F93FA5C000F0441 /* PlainTextController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 933BF5AA0F93FA5C000F0441 /* PlainTextController.mm */; }; 9340994C08540CAE007F3BC8 /* DumpRenderTreePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */; }; 9340995108540CAE007F3BC8 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9335435F03D75502008635CE /* WebKit.framework */; }; A817090008B163EF00CCB9FB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84F608908B136DA00E9745F /* Cocoa.framework */; }; @@ -55,6 +59,8 @@ 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 */; }; 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 */; }; @@ -117,6 +123,13 @@ remoteGlobalIDString = 141BF21E096A441D00E0753C; remoteInfo = TestNetscapePlugIn; }; + 5DC82A6F1023C93D00FD1D3B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5DC82A661023C8DE00FD1D3B; + remoteInfo = "DumpRenderTree Perl Support"; + }; A84F608E08B1370E00E9745F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; @@ -176,7 +189,10 @@ 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>"; }; + 8465E2C60FFA8DF2003B8342 /* PixelDumpSupport.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 30; path = PixelDumpSupport.cpp; sourceTree = "<group>"; }; 9335435F03D75502008635CE /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 933BF5A90F93FA5C000F0441 /* PlainTextController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlainTextController.h; path = mac/PlainTextController.h; sourceTree = "<group>"; }; + 933BF5AA0F93FA5C000F0441 /* PlainTextController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlainTextController.mm; path = mac/PlainTextController.mm; sourceTree = "<group>"; }; 9340995408540CAF007F3BC8 /* DumpRenderTree */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = DumpRenderTree; sourceTree = BUILT_PRODUCTS_DIR; }; A803FF7409CAAD08009B2A37 /* DumpRenderTree.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = DumpRenderTree.h; sourceTree = "<group>"; }; A817090308B164D300CCB9FB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -187,6 +203,8 @@ 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>"; }; 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; }; @@ -302,6 +320,8 @@ BCA18C0A0C9B59EF00114369 /* DumpRenderTreeMac.h */, BCA18B730C9B08F100114369 /* DumpRenderTreeDraggingInfo.h */, BCA18B740C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm */, + A8D79CE80FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.h */, + A8D79CE90FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.m */, BC9D90210C97472D0099A4A3 /* WorkQueue.cpp */, BC9D90220C97472E0099A4A3 /* WorkQueue.h */, BC9D90230C97472E0099A4A3 /* WorkQueueItem.h */, @@ -320,11 +340,11 @@ isa = PBXGroup; children = ( 141BF448096A45C800E0753C /* Info.plist */, + 1AC6C77F0D07589B00CD3161 /* main.cpp */, 1AC6C7800D07589B00CD3161 /* PluginObject.cpp */, 141BF447096A45C800E0753C /* PluginObject.h */, 1AC6C7810D07589B00CD3161 /* TestObject.cpp */, 1A8F024C0BB9B056008CFA34 /* TestObject.h */, - 1AC6C77F0D07589B00CD3161 /* main.cpp */, ); path = TestNetscapePlugIn.subproj; sourceTree = "<group>"; @@ -352,6 +372,8 @@ BCA18B6E0C9B08DB00114369 /* NavigationController.m */, BCA18B2F0C9B01B400114369 /* ObjCController.h */, BCA18B300C9B01B400114369 /* ObjCController.m */, + 933BF5A90F93FA5C000F0441 /* PlainTextController.h */, + 933BF5AA0F93FA5C000F0441 /* PlainTextController.mm */, BCA18B3A0C9B024900114369 /* TextInputController.h */, BCA18B480C9B02C400114369 /* TextInputController.m */, ); @@ -456,6 +478,7 @@ isa = PBXGroup; children = ( BCB284F30CFA84F2007E533E /* ImageDiffCG.cpp */, + 8465E2C60FFA8DF2003B8342 /* PixelDumpSupport.cpp */, BCB2848A0CFA820F007E533E /* PixelDumpSupport.h */, BCB284880CFA8202007E533E /* PixelDumpSupportCG.cpp */, BCB284890CFA8202007E533E /* PixelDumpSupportCG.h */, @@ -484,6 +507,7 @@ BCA18B380C9B021900114369 /* AppleScriptController.h in Headers */, A8B91BFF0CF522B4008F91FF /* CheckedMalloc.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 */, @@ -500,6 +524,7 @@ BCA18B7F0C9B08F100114369 /* ObjCPluginFunction.h in Headers */, BCB284C70CFA83C4007E533E /* PixelDumpSupport.h in Headers */, BCB284D00CFA83CC007E533E /* PixelDumpSupportCG.h in Headers */, + 933BF5AB0F93FA5C000F0441 /* PlainTextController.h in Headers */, BCA18B650C9B08C200114369 /* PolicyDelegate.h in Headers */, BCA18B670C9B08C200114369 /* ResourceLoadDelegate.h in Headers */, BCA18B3C0C9B024900114369 /* TextInputController.h in Headers */, @@ -518,6 +543,23 @@ }; /* 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 = /usr/bin/make; + buildWorkingDirectory = "$(SRCROOT)/mac/PerlSupport"; + dependencies = ( + ); + name = "DumpRenderTree Perl Support"; + passBuildSettingsInEnvironment = 1; + productName = "DumpRenderTree Perl Support"; + }; +/* End PBXLegacyTarget section */ + /* Begin PBXNativeTarget section */ 141BF21E096A441D00E0753C /* TestNetscapePlugIn */ = { isa = PBXNativeTarget; @@ -591,6 +633,7 @@ 9340994A08540CAE007F3BC8 /* DumpRenderTree */, B5A7525A08AF4A4A00138E45 /* ImageDiff */, 141BF21E096A441D00E0753C /* TestNetscapePlugIn */, + 5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */, ); }; /* End PBXProject section */ @@ -610,9 +653,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 1AC6C8490D07638600CD3161 /* main.cpp in Sources */, 1AC6C84A0D07638600CD3161 /* PluginObject.cpp in Sources */, 1AC6C84B0D07638600CD3161 /* TestObject.cpp in Sources */, - 1AC6C8490D07638600CD3161 /* main.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -628,6 +671,7 @@ A8B91BFD0CF522B4008F91FF /* CheckedMalloc.cpp in Sources */, BCA18C470C9B5B9400114369 /* DumpRenderTree.mm 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 */, @@ -642,8 +686,10 @@ 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 */, + 933BF5AC0F93FA5C000F0441 /* PlainTextController.mm in Sources */, BCA18B660C9B08C200114369 /* PolicyDelegate.mm in Sources */, BCA18B680C9B08C200114369 /* ResourceLoadDelegate.mm in Sources */, BCA18B490C9B02C400114369 /* TextInputController.m in Sources */, @@ -669,6 +715,11 @@ target = 141BF21E096A441D00E0753C /* TestNetscapePlugIn */; targetProxy = 141BF237096A451E00E0753C /* PBXContainerItemProxy */; }; + 5DC82A701023C93D00FD1D3B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */; + targetProxy = 5DC82A6F1023C93D00FD1D3B /* PBXContainerItemProxy */; + }; A84F608F08B1370E00E9745F /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = B5A7525A08AF4A4A00138E45 /* ImageDiff */; @@ -725,6 +776,27 @@ }; name = Release; }; + 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 */; @@ -851,6 +923,16 @@ 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 = ( diff --git a/WebKitTools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h b/WebKitTools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h new file mode 100644 index 0000000..e2f45d6 --- /dev/null +++ b/WebKitTools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h @@ -0,0 +1,39 @@ +// 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 <Cocoa/Cocoa.h> + +// An implementation of NSDraggingSource for use with DumpRenderTreeDraggingInfo when dragging files +// Used by -[EventSendingController beginDragWithFiles:] + +@interface DumpRenderTreeFileDraggingSource : NSObject { +} + +- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)flag; + +@end diff --git a/WebKitTools/DumpRenderTree/DumpRenderTreeFileDraggingSource.m b/WebKitTools/DumpRenderTree/DumpRenderTreeFileDraggingSource.m new file mode 100644 index 0000000..449d918 --- /dev/null +++ b/WebKitTools/DumpRenderTree/DumpRenderTreeFileDraggingSource.m @@ -0,0 +1,38 @@ +// 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/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/FastMalloc.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/FastMalloc.h new file mode 100644 index 0000000..1701231 --- /dev/null +++ b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/FastMalloc.h @@ -0,0 +1 @@ +#include <JavaScriptCore/FastMalloc.h> diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/OwnPtrCommon.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/OwnPtrCommon.h new file mode 100644 index 0000000..6064e88 --- /dev/null +++ b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/OwnPtrCommon.h @@ -0,0 +1 @@ +#include <JavaScriptCore/PassOwnPtr.h> diff --git a/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/PassOwnPtr.h b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/PassOwnPtr.h new file mode 100644 index 0000000..6064e88 --- /dev/null +++ b/WebKitTools/DumpRenderTree/ForwardingHeaders/wtf/PassOwnPtr.h @@ -0,0 +1 @@ +#include <JavaScriptCore/PassOwnPtr.h> diff --git a/WebKitTools/DumpRenderTree/GCController.cpp b/WebKitTools/DumpRenderTree/GCController.cpp index e1a16f2..fe84a58 100644 --- a/WebKitTools/DumpRenderTree/GCController.cpp +++ b/WebKitTools/DumpRenderTree/GCController.cpp @@ -44,7 +44,7 @@ GCController::~GCController() static JSValueRef collectCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - GCController* controller = reinterpret_cast<GCController*>(JSObjectGetPrivate(thisObject)); + GCController* controller = static_cast<GCController*>(JSObjectGetPrivate(thisObject)); controller->collect(); return JSValueMakeUndefined(context); } @@ -55,7 +55,7 @@ static JSValueRef collectOnAlternateThreadCallback(JSContextRef context, JSObjec if (argumentCount > 0) waitUntilDone = JSValueToBoolean(context, arguments[0]); - GCController* controller = reinterpret_cast<GCController*>(JSObjectGetPrivate(thisObject)); + GCController* controller = static_cast<GCController*>(JSObjectGetPrivate(thisObject)); controller->collectOnAlternateThread(waitUntilDone); return JSValueMakeUndefined(context); @@ -63,7 +63,7 @@ static JSValueRef collectOnAlternateThreadCallback(JSContextRef context, JSObjec static JSValueRef getJSObjectCountCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - GCController* controller = reinterpret_cast<GCController*>(JSObjectGetPrivate(thisObject)); + GCController* controller = static_cast<GCController*>(JSObjectGetPrivate(thisObject)); size_t jsObjectCount = controller->getJSObjectCount(); return JSValueMakeNumber(context, jsObjectCount); diff --git a/WebKitTools/DumpRenderTree/LayoutTestController.cpp b/WebKitTools/DumpRenderTree/LayoutTestController.cpp index 2a06c4f..2a0871f 100644 --- a/WebKitTools/DumpRenderTree/LayoutTestController.cpp +++ b/WebKitTools/DumpRenderTree/LayoutTestController.cpp @@ -29,6 +29,8 @@ #include "config.h" #include "LayoutTestController.h" +#include "WorkQueue.h" +#include "WorkQueueItem.h" #include <JavaScriptCore/JSObjectRef.h> #include <JavaScriptCore/JSRetainPtr.h> #include <wtf/Assertions.h> @@ -48,8 +50,9 @@ LayoutTestController::LayoutTestController(const std::string& testPathOrURL, con , m_dumpTitleChanges(false) , m_dumpEditingCallbacks(false) , m_dumpResourceLoadCallbacks(false) + , m_dumpResourceResponseMIMETypes(false) + , m_dumpWillCacheResponse(false) , m_dumpFrameLoadCallbacks(false) - , m_addFileToPasteboardOnDrag(false) , m_callCloseOnWebViews(true) , m_canOpenWindows(false) , m_closeRemainingWindowsWhenComplete(true) @@ -58,6 +61,7 @@ LayoutTestController::LayoutTestController(const std::string& testPathOrURL, con , m_testRepaint(false) , m_testRepaintSweepHorizontally(false) , m_waitToDump(false) + , m_willSendRequestReturnsNullOnRedirect(false) , m_windowIsKey(true) , m_globalFlag(false) , m_testPathOrURL(testPathOrURL) @@ -69,101 +73,115 @@ LayoutTestController::LayoutTestController(const std::string& testPathOrURL, con static JSValueRef dumpAsTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpAsText(true); return JSValueMakeUndefined(context); } static JSValueRef dumpAsPDFCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpAsPDF(true); return JSValueMakeUndefined(context); } static JSValueRef dumpBackForwardListCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpBackForwardList(true); return JSValueMakeUndefined(context); } static JSValueRef dumpChildFramesAsTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpChildFramesAsText(true); return JSValueMakeUndefined(context); } static JSValueRef dumpChildFrameScrollPositionsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpChildFrameScrollPositions(true); return JSValueMakeUndefined(context); } static JSValueRef dumpDatabaseCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpDatabaseCallbacks(true); return JSValueMakeUndefined(context); } static JSValueRef dumpDOMAsWebArchiveCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpDOMAsWebArchive(true); return JSValueMakeUndefined(context); } static JSValueRef dumpEditingCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpEditingCallbacks(true); return JSValueMakeUndefined(context); } static JSValueRef dumpResourceLoadCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpResourceLoadCallbacks(true); return JSValueMakeUndefined(context); } +static JSValueRef dumpResourceResponseMIMETypesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->setDumpResourceResponseMIMETypes(true); + return JSValueMakeUndefined(context); +} + static JSValueRef dumpSelectionRectCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpSelectionRect(true); return JSValueMakeUndefined(context); } static JSValueRef dumpSourceAsWebArchiveCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpSourceAsWebArchive(true); return JSValueMakeUndefined(context); } static JSValueRef dumpStatusCallbacksCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpStatusCallbacks(true); return JSValueMakeUndefined(context); } static JSValueRef dumpTitleChangesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setDumpTitleChanges(true); return JSValueMakeUndefined(context); } +static JSValueRef dumpWillCacheResponseCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->setDumpWillCacheResponse(true); + return JSValueMakeUndefined(context); +} + static JSValueRef pathToLocalResourceCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); JSRetainPtr<JSStringRef> localPath(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); @@ -176,7 +194,7 @@ static JSValueRef pathToLocalResourceCallback(JSContextRef context, JSObjectRef static JSValueRef repaintSweepHorizontallyCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setTestRepaintSweepHorizontally(true); return JSValueMakeUndefined(context); } @@ -186,14 +204,14 @@ static JSValueRef setCallCloseOnWebViewsCallback(JSContextRef context, JSObjectR if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setCallCloseOnWebViews(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); } static JSValueRef setCanOpenWindowsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setCanOpenWindows(true); return JSValueMakeUndefined(context); } @@ -203,32 +221,25 @@ static JSValueRef setCloseRemainingWindowsWhenCompleteCallback(JSContextRef cont if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setCloseRemainingWindowsWhenComplete(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); } static JSValueRef testOnscreenCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setTestOnscreen(true); return JSValueMakeUndefined(context); } static JSValueRef testRepaintCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setTestRepaint(true); return JSValueMakeUndefined(context); } -static JSValueRef addFileToPasteboardOnDragCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) -{ - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); - controller->setAddFileToPasteboardOnDrag(true); - return JSValueMakeUndefined(context); -} - static JSValueRef addDisallowedURLCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac implementation @@ -238,7 +249,7 @@ static JSValueRef addDisallowedURLCallback(JSContextRef context, JSObjectRef fun JSRetainPtr<JSStringRef> url(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->addDisallowedURL(url.get()); return JSValueMakeUndefined(context); @@ -247,7 +258,7 @@ static JSValueRef addDisallowedURLCallback(JSContextRef context, JSObjectRef fun static JSValueRef clearAllDatabasesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac & windows implementation - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->clearAllDatabases(); return JSValueMakeUndefined(context); @@ -256,7 +267,7 @@ static JSValueRef clearAllDatabasesCallback(JSContextRef context, JSObjectRef fu static JSValueRef clearBackForwardListCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac & windows implementation - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->clearBackForwardList(); return JSValueMakeUndefined(context); @@ -265,7 +276,7 @@ static JSValueRef clearBackForwardListCallback(JSContextRef context, JSObjectRef static JSValueRef clearPersistentUserStyleSheetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac & windows implementation - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->clearPersistentUserStyleSheet(); return JSValueMakeUndefined(context); @@ -280,15 +291,33 @@ static JSValueRef decodeHostNameCallback(JSContextRef context, JSObjectRef funct JSRetainPtr<JSStringRef> name(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); JSRetainPtr<JSStringRef> decodedHostName(Adopt, controller->copyDecodedHostName(name.get())); return JSValueMakeString(context, decodedHostName.get()); } +static JSValueRef disableImageLoadingCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + // Has mac implementation, needs windows implementation + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->disableImageLoading(); + + return JSValueMakeUndefined(context); +} + +static JSValueRef dispatchPendingLoadRequestsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + // Has mac implementation, needs windows implementation + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->dispatchPendingLoadRequests(); + + return JSValueMakeUndefined(context); +} + static JSValueRef displayCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac & windows implementation - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->display(); return JSValueMakeUndefined(context); @@ -303,7 +332,7 @@ static JSValueRef encodeHostNameCallback(JSContextRef context, JSObjectRef funct JSRetainPtr<JSStringRef> name(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); JSRetainPtr<JSStringRef> encodedHostName(Adopt, controller->copyEncodedHostName(name.get())); return JSValueMakeString(context, encodedHostName.get()); } @@ -327,7 +356,7 @@ static JSValueRef execCommandCallback(JSContextRef context, JSObjectRef function value.adopt(JSStringCreateWithUTF8CString("")); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->execCommand(name.get(), value.get()); return JSValueMakeUndefined(context); @@ -343,7 +372,7 @@ static JSValueRef isCommandEnabledCallback(JSContextRef context, JSObjectRef fun JSRetainPtr<JSStringRef> name(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); return JSValueMakeBoolean(context, controller->isCommandEnabled(name.get())); } @@ -351,7 +380,7 @@ static JSValueRef isCommandEnabledCallback(JSContextRef context, JSObjectRef fun static JSValueRef keepWebHistoryCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac implementation - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->keepWebHistory(); return JSValueMakeUndefined(context); @@ -361,7 +390,7 @@ static JSValueRef notifyDoneCallback(JSContextRef context, JSObjectRef function, { // Has mac & windows implementation // May be able to be made platform independant by using shared WorkQueue - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->notifyDone(); return JSValueMakeUndefined(context); } @@ -376,7 +405,7 @@ static JSValueRef queueBackNavigationCallback(JSContextRef context, JSObjectRef double howFarBackDouble = JSValueToNumber(context, arguments[0], exception); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->queueBackNavigation(static_cast<int>(howFarBackDouble)); return JSValueMakeUndefined(context); @@ -392,7 +421,7 @@ static JSValueRef queueForwardNavigationCallback(JSContextRef context, JSObjectR double howFarForwardDouble = JSValueToNumber(context, arguments[0], exception); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->queueForwardNavigation(static_cast<int>(howFarForwardDouble)); return JSValueMakeUndefined(context); @@ -415,7 +444,7 @@ static JSValueRef queueLoadCallback(JSContextRef context, JSObjectRef function, } else target.adopt(JSStringCreateWithUTF8CString("")); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->queueLoad(url.get(), target.get()); return JSValueMakeUndefined(context); @@ -426,13 +455,13 @@ static JSValueRef queueReloadCallback(JSContextRef context, JSObjectRef function // Has mac & windows implementation // May be able to be made platform independant by using shared WorkQueue - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->queueReload(); return JSValueMakeUndefined(context); } -static JSValueRef queueScriptCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +static JSValueRef queueLoadingScriptCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac & windows implementation // May be able to be made platform independant by using shared WorkQueue @@ -442,8 +471,24 @@ static JSValueRef queueScriptCallback(JSContextRef context, JSObjectRef function JSRetainPtr<JSStringRef> script(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); - controller->queueScript(script.get()); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->queueLoadingScript(script.get()); + + return JSValueMakeUndefined(context); +} + +static JSValueRef queueNonLoadingScriptCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + // Has mac & windows implementation + // May be able to be made platform independant by using shared WorkQueue + if (argumentCount < 1) + return JSValueMakeUndefined(context); + + JSRetainPtr<JSStringRef> script(Adopt, JSValueToStringCopy(context, arguments[0], exception)); + ASSERT(!*exception); + + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->queueNonLoadingScript(script.get()); return JSValueMakeUndefined(context); } @@ -454,7 +499,7 @@ static JSValueRef setAcceptsEditingCallback(JSContextRef context, JSObjectRef fu if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setAcceptsEditing(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -482,12 +527,27 @@ static JSValueRef setAuthorAndUserStylesEnabledCallback(JSContextRef context, JS if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setAuthorAndUserStylesEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); } +static JSValueRef setCacheModelCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + // Has Mac implementation. + if (argumentCount < 1) + return JSValueMakeUndefined(context); + + int cacheModel = JSValueToNumber(context, arguments[0], exception); + ASSERT(!*exception); + + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->setCacheModel(cacheModel); + + return JSValueMakeUndefined(context); +} + static JSValueRef setCustomPolicyDelegateCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac implementation @@ -498,7 +558,7 @@ static JSValueRef setCustomPolicyDelegateCallback(JSContextRef context, JSObject if (argumentCount >= 2) permissive = JSValueToBoolean(context, arguments[1]); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setCustomPolicyDelegate(JSValueToBoolean(context, arguments[0]), permissive); return JSValueMakeUndefined(context); @@ -510,7 +570,7 @@ static JSValueRef setDatabaseQuotaCallback(JSContextRef context, JSObjectRef fun if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); double quota = JSValueToNumber(context, arguments[0], NULL); if (!isnan(quota)) @@ -526,7 +586,7 @@ static JSValueRef setIconDatabaseEnabledCallback(JSContextRef context, JSObjectR if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setIconDatabaseEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -537,7 +597,7 @@ static JSValueRef setJavaScriptProfilingEnabledCallback(JSContextRef context, JS if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setJavaScriptProfilingEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -549,7 +609,7 @@ static JSValueRef setMainFrameIsFirstResponderCallback(JSContextRef context, JSO if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setMainFrameIsFirstResponder(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -564,7 +624,7 @@ static JSValueRef setPersistentUserStyleSheetLocationCallback(JSContextRef conte JSRetainPtr<JSStringRef> path(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setPersistentUserStyleSheetLocation(path.get()); return JSValueMakeUndefined(context); @@ -576,19 +636,31 @@ static JSValueRef setPrivateBrowsingEnabledCallback(JSContextRef context, JSObje if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setPrivateBrowsingEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); } +static JSValueRef setXSSAuditorEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + // Has mac & windows implementation + if (argumentCount < 1) + return JSValueMakeUndefined(context); + + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->setXSSAuditorEnabled(JSValueToBoolean(context, arguments[0])); + + return JSValueMakeUndefined(context); +} + static JSValueRef setTabKeyCyclesThroughElementsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac & windows implementation if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setTabKeyCyclesThroughElements(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -600,7 +672,7 @@ static JSValueRef setUseDashboardCompatibilityModeCallback(JSContextRef context, if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setUseDashboardCompatibilityMode(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -612,7 +684,7 @@ static JSValueRef setUserStyleSheetEnabledCallback(JSContextRef context, JSObjec if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setUserStyleSheetEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -627,19 +699,31 @@ static JSValueRef setUserStyleSheetLocationCallback(JSContextRef context, JSObje JSRetainPtr<JSStringRef> path(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setUserStyleSheetLocation(path.get()); return JSValueMakeUndefined(context); } +static JSValueRef setWillSendRequestReturnsNullOnRedirectCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) +{ + // Has cross-platform implementation + if (argumentCount < 1) + return JSValueMakeUndefined(context); + + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->setWillSendRequestReturnsNullOnRedirect(JSValueToBoolean(context, arguments[0])); + + return JSValueMakeUndefined(context); +} + static JSValueRef setWindowIsKeyCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac implementation if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setWindowIsKey(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -648,7 +732,7 @@ static JSValueRef setWindowIsKeyCallback(JSContextRef context, JSObjectRef funct static JSValueRef waitUntilDoneCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac & windows implementation - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setWaitToDump(true); return JSValueMakeUndefined(context); @@ -657,7 +741,7 @@ static JSValueRef waitUntilDoneCallback(JSContextRef context, JSObjectRef functi static JSValueRef windowCountCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { // Has mac implementation - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); int windows = controller->windowCount(); return JSValueMakeNumber(context, windows); } @@ -668,7 +752,7 @@ static JSValueRef setPopupBlockingEnabledCallback(JSContextRef context, JSObject if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setPopupBlockingEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); @@ -679,7 +763,7 @@ static JSValueRef setSmartInsertDeleteEnabledCallback(JSContextRef context, JSOb if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setSmartInsertDeleteEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); } @@ -689,21 +773,21 @@ static JSValueRef setSelectTrailingWhitespaceEnabledCallback(JSContextRef contex if (argumentCount < 1) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setSelectTrailingWhitespaceEnabled(JSValueToBoolean(context, arguments[0])); return JSValueMakeUndefined(context); } static JSValueRef setStopProvisionalFrameLoadsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setStopProvisionalFrameLoads(true); return JSValueMakeUndefined(context); } static JSValueRef elementDoesAutoCompleteForElementWithIdCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); JSRetainPtr<JSStringRef> elementId(Adopt, JSValueToStringCopy(context, arguments[0], exception)); ASSERT(!*exception); @@ -724,7 +808,7 @@ static JSValueRef pauseAnimationAtTimeOnElementWithIdCallback(JSContextRef conte JSRetainPtr<JSStringRef> elementId(Adopt, JSValueToStringCopy(context, arguments[2], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); return JSValueMakeBoolean(context, controller->pauseAnimationAtTimeOnElementWithId(animationName.get(), time, elementId.get())); } @@ -740,7 +824,7 @@ static JSValueRef pauseTransitionAtTimeOnElementWithIdCallback(JSContextRef cont JSRetainPtr<JSStringRef> elementId(Adopt, JSValueToStringCopy(context, arguments[2], exception)); ASSERT(!*exception); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); return JSValueMakeBoolean(context, controller->pauseTransitionAtTimeOnElementWithId(propertyName.get(), time, elementId.get())); } @@ -749,34 +833,41 @@ static JSValueRef numberOfActiveAnimationsCallback(JSContextRef context, JSObjec if (argumentCount != 0) return JSValueMakeUndefined(context); - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); return JSValueMakeNumber(context, controller->numberOfActiveAnimations()); } +static JSValueRef waitForPolicyDelegateCallback(JSContextRef context, JSObjectRef, JSObjectRef thisObject, size_t, const JSValueRef[], JSValueRef*) +{ + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + controller->waitForPolicyDelegate(); + return JSValueMakeUndefined(context); +} + // Static Values static JSValueRef getGlobalFlagCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); return JSValueMakeBoolean(context, controller->globalFlag()); } static JSValueRef getWebHistoryItemCountCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); return JSValueMakeNumber(context, controller->webHistoryItemCount()); } static bool setGlobalFlagCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject)); controller->setGlobalFlag(JSValueToBoolean(context, value)); return true; } static void layoutTestControllerObjectFinalize(JSObjectRef object) { - LayoutTestController* controller = reinterpret_cast<LayoutTestController*>(JSObjectGetPrivate(object)); + LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(object)); controller->deref(); } @@ -816,49 +907,57 @@ JSStaticValue* LayoutTestController::staticValues() { 0, 0, 0, 0 } }; return staticValues; - } JSStaticFunction* LayoutTestController::staticFunctions() { static JSStaticFunction staticFunctions[] = { { "addDisallowedURL", addDisallowedURLCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "addFileToPasteboardOnDrag", addFileToPasteboardOnDragCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "clearAllDatabases", clearAllDatabasesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "clearBackForwardList", clearBackForwardListCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "clearPersistentUserStyleSheet", clearPersistentUserStyleSheetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "decodeHostName", decodeHostNameCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "disableImageLoading", disableImageLoadingCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "dispatchPendingLoadRequests", dispatchPendingLoadRequestsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "display", displayCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpAsText", dumpAsTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "printToPDF", dumpAsPDFCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpBackForwardList", dumpBackForwardListCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "dumpChildFramesAsText", dumpChildFramesAsTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpChildFrameScrollPositions", dumpChildFrameScrollPositionsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "dumpDatabaseCallbacks", dumpDatabaseCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "dumpChildFramesAsText", dumpChildFramesAsTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpDOMAsWebArchive", dumpDOMAsWebArchiveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "dumpDatabaseCallbacks", dumpDatabaseCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpEditingCallbacks", dumpEditingCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpResourceLoadCallbacks", dumpResourceLoadCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "dumpResourceResponseMIMETypes", dumpResourceResponseMIMETypesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpSelectionRect", dumpSelectionRectCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpSourceAsWebArchive", dumpSourceAsWebArchiveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpStatusCallbacks", dumpStatusCallbacksCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "dumpTitleChanges", dumpTitleChangesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "dumpWillCacheResponse", dumpWillCacheResponseCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "elementDoesAutoCompleteForElementWithId", elementDoesAutoCompleteForElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "encodeHostName", encodeHostNameCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "execCommand", execCommandCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "isCommandEnabled", isCommandEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "keepWebHistory", keepWebHistoryCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "notifyDone", notifyDoneCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "numberOfActiveAnimations", numberOfActiveAnimationsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "pathToLocalResource", pathToLocalResourceCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "pauseAnimationAtTimeOnElementWithId", pauseAnimationAtTimeOnElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "pauseTransitionAtTimeOnElementWithId", pauseTransitionAtTimeOnElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "printToPDF", dumpAsPDFCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "queueBackNavigation", queueBackNavigationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "queueForwardNavigation", queueForwardNavigationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "queueLoad", queueLoadCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "queueLoadingScript", queueLoadingScriptCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "queueNonLoadingScript", queueNonLoadingScriptCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "queueReload", queueReloadCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "queueScript", queueScriptCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "repaintSweepHorizontally", repaintSweepHorizontallyCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setAcceptsEditing", setAcceptsEditingCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setAuthorAndUserStylesEnabled", setAuthorAndUserStylesEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setAppCacheMaximumSize", setAppCacheMaximumSizeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setCallCloseOnWebViews", setCallCloseOnWebViewsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setCanOpenWindows", setCanOpenWindowsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "setCacheModel", setCacheModelCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setCloseRemainingWindowsWhenComplete", setCloseRemainingWindowsWhenCompleteCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setCustomPolicyDelegate", setCustomPolicyDelegateCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setDatabaseQuota", setDatabaseQuotaCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, @@ -866,26 +965,50 @@ JSStaticFunction* LayoutTestController::staticFunctions() { "setJavaScriptProfilingEnabled", setJavaScriptProfilingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setMainFrameIsFirstResponder", setMainFrameIsFirstResponderCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setPersistentUserStyleSheetLocation", setPersistentUserStyleSheetLocationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "setPrivateBrowsingEnabled", setPrivateBrowsingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setPopupBlockingEnabled", setPopupBlockingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "setSmartInsertDeleteEnabled", setSmartInsertDeleteEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "setPrivateBrowsingEnabled", setPrivateBrowsingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "setXSSAuditorEnabled", setXSSAuditorEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setSelectTrailingWhitespaceEnabled", setSelectTrailingWhitespaceEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "setSmartInsertDeleteEnabled", setSmartInsertDeleteEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setStopProvisionalFrameLoads", setStopProvisionalFrameLoadsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setTabKeyCyclesThroughElements", setTabKeyCyclesThroughElementsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setUseDashboardCompatibilityMode", setUseDashboardCompatibilityModeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setUserStyleSheetEnabled", setUserStyleSheetEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setUserStyleSheetLocation", setUserStyleSheetLocationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "setWillSendRequestReturnsNullOnRedirect", setWillSendRequestReturnsNullOnRedirectCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "setWindowIsKey", setWindowIsKeyCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "testOnscreen", testOnscreenCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "testRepaint", testRepaintCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, + { "waitForPolicyDelegate", waitForPolicyDelegateCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "waitUntilDone", waitUntilDoneCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { "windowCount", windowCountCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "elementDoesAutoCompleteForElementWithId", elementDoesAutoCompleteForElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "pauseAnimationAtTimeOnElementWithId", pauseAnimationAtTimeOnElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "pauseTransitionAtTimeOnElementWithId", pauseTransitionAtTimeOnElementWithIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, - { "numberOfActiveAnimations", numberOfActiveAnimationsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete }, { 0, 0, 0 } }; return staticFunctions; } + +void LayoutTestController::queueBackNavigation(int howFarBack) +{ + WorkQueue::shared()->queue(new BackItem(howFarBack)); +} + +void LayoutTestController::queueForwardNavigation(int howFarForward) +{ + WorkQueue::shared()->queue(new ForwardItem(howFarForward)); +} + +void LayoutTestController::queueLoadingScript(JSStringRef script) +{ + WorkQueue::shared()->queue(new LoadingScriptItem(script)); +} + +void LayoutTestController::queueNonLoadingScript(JSStringRef script) +{ + WorkQueue::shared()->queue(new NonLoadingScriptItem(script)); +} + +void LayoutTestController::queueReload() +{ + WorkQueue::shared()->queue(new ReloadItem); +} diff --git a/WebKitTools/DumpRenderTree/LayoutTestController.h b/WebKitTools/DumpRenderTree/LayoutTestController.h index 0f41923..5bc9d61 100644 --- a/WebKitTools/DumpRenderTree/LayoutTestController.h +++ b/WebKitTools/DumpRenderTree/LayoutTestController.h @@ -43,38 +43,44 @@ public: void addDisallowedURL(JSStringRef url); void clearAllDatabases(); void clearBackForwardList(); + void clearPersistentUserStyleSheet(); JSStringRef copyDecodedHostName(JSStringRef name); JSStringRef copyEncodedHostName(JSStringRef name); - void execCommand(JSStringRef name, JSStringRef value); + void disableImageLoading(); + void dispatchPendingLoadRequests(); void display(); + void execCommand(JSStringRef name, JSStringRef value); bool isCommandEnabled(JSStringRef name); void keepWebHistory(); - size_t webHistoryItemCount(); void notifyDone(); JSStringRef pathToLocalResource(JSContextRef, JSStringRef url); void queueBackNavigation(int howFarBackward); void queueForwardNavigation(int howFarForward); void queueLoad(JSStringRef url, JSStringRef target); + void queueLoadingScript(JSStringRef script); + void queueNonLoadingScript(JSStringRef script); void queueReload(); - void queueScript(JSStringRef url); void setAcceptsEditing(bool acceptsEditing); void setAppCacheMaximumSize(unsigned long long quota); void setAuthorAndUserStylesEnabled(bool); + void setCacheModel(int); void setCustomPolicyDelegate(bool setDelegate, bool permissive); void setDatabaseQuota(unsigned long long quota); void setIconDatabaseEnabled(bool iconDatabaseEnabled); void setJavaScriptProfilingEnabled(bool profilingEnabled); void setMainFrameIsFirstResponder(bool flag); - void setPrivateBrowsingEnabled(bool flag); + void setPersistentUserStyleSheetLocation(JSStringRef path); void setPopupBlockingEnabled(bool flag); - void setTabKeyCyclesThroughElements(bool cycles); - void setSmartInsertDeleteEnabled(bool flag); + void setPrivateBrowsingEnabled(bool flag); + void setXSSAuditorEnabled(bool flag); void setSelectTrailingWhitespaceEnabled(bool flag); + void setSmartInsertDeleteEnabled(bool flag); + void setTabKeyCyclesThroughElements(bool cycles); void setUseDashboardCompatibilityMode(bool flag); void setUserStyleSheetEnabled(bool flag); void setUserStyleSheetLocation(JSStringRef path); - void setPersistentUserStyleSheetLocation(JSStringRef path); - void clearPersistentUserStyleSheet(); + void waitForPolicyDelegate(); + size_t webHistoryItemCount(); int windowCount(); bool elementDoesAutoCompleteForElementWithId(JSStringRef id); @@ -117,13 +123,16 @@ public: bool dumpResourceLoadCallbacks() const { return m_dumpResourceLoadCallbacks; } void setDumpResourceLoadCallbacks(bool dumpResourceLoadCallbacks) { m_dumpResourceLoadCallbacks = dumpResourceLoadCallbacks; } + + bool dumpResourceResponseMIMETypes() const { return m_dumpResourceResponseMIMETypes; } + void setDumpResourceResponseMIMETypes(bool dumpResourceResponseMIMETypes) { m_dumpResourceResponseMIMETypes = dumpResourceResponseMIMETypes; } + + bool dumpWillCacheResponse() const { return m_dumpWillCacheResponse; } + void setDumpWillCacheResponse(bool dumpWillCacheResponse) { m_dumpWillCacheResponse = dumpWillCacheResponse; } bool dumpFrameLoadCallbacks() const { return m_dumpFrameLoadCallbacks; } void setDumpFrameLoadCallbacks(bool dumpFrameLoadCallbacks) { m_dumpFrameLoadCallbacks = dumpFrameLoadCallbacks; } - bool addFileToPasteboardOnDrag() const { return m_addFileToPasteboardOnDrag; } - void setAddFileToPasteboardOnDrag(bool addFileToPasteboardOnDrag) { m_addFileToPasteboardOnDrag = addFileToPasteboardOnDrag; } - bool callCloseOnWebViews() const { return m_callCloseOnWebViews; } void setCallCloseOnWebViews(bool callCloseOnWebViews) { m_callCloseOnWebViews = callCloseOnWebViews; } @@ -148,6 +157,9 @@ public: bool waitToDump() const { return m_waitToDump; } void setWaitToDump(bool waitToDump); + bool willSendRequestReturnsNullOnRedirect() const { return m_willSendRequestReturnsNullOnRedirect; } + void setWillSendRequestReturnsNullOnRedirect(bool returnsNull) { m_willSendRequestReturnsNullOnRedirect = returnsNull; } + bool windowIsKey() const { return m_windowIsKey; } void setWindowIsKey(bool windowIsKey); @@ -175,8 +187,9 @@ private: bool m_dumpTitleChanges; bool m_dumpEditingCallbacks; bool m_dumpResourceLoadCallbacks; + bool m_dumpResourceResponseMIMETypes; + bool m_dumpWillCacheResponse; bool m_dumpFrameLoadCallbacks; - bool m_addFileToPasteboardOnDrag; bool m_callCloseOnWebViews; bool m_canOpenWindows; bool m_closeRemainingWindowsWhenComplete; @@ -185,6 +198,7 @@ private: bool m_testRepaint; bool m_testRepaintSweepHorizontally; bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called. + bool m_willSendRequestReturnsNullOnRedirect; bool m_windowIsKey; bool m_globalFlag; diff --git a/WebKitTools/DumpRenderTree/PixelDumpSupport.cpp b/WebKitTools/DumpRenderTree/PixelDumpSupport.cpp new file mode 100644 index 0000000..e38b2d4 --- /dev/null +++ b/WebKitTools/DumpRenderTree/PixelDumpSupport.cpp @@ -0,0 +1,83 @@ +/* + * 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. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "DumpRenderTree.h" +#include "LayoutTestController.h" +#include "PixelDumpSupport.h" +#include <wtf/Assertions.h> +#include <wtf/RefPtr.h> +#include <wtf/RetainPtr.h> + +#if PLATFORM(CG) +#include "PixelDumpSupportCG.h" +#elif PLATFORM(CAIRO) +#include "PixelDumpSupportCairo.h" +#endif + +void dumpWebViewAsPixelsAndCompareWithExpected(const std::string& expectedHash) +{ + RefPtr<BitmapContext> context = createBitmapContextFromWebView(gLayoutTestController->testOnscreen(), gLayoutTestController->testRepaint(), gLayoutTestController->testRepaintSweepHorizontally(), gLayoutTestController->dumpSelectionRect()); + ASSERT(context); + + // Compute the hash of the bitmap context pixels + char actualHash[33]; + computeMD5HashStringForBitmapContext(context.get(), actualHash); + printf("\nActualHash: %s\n", actualHash); + + // Check the computed hash against the expected one and dump image on mismatch + bool dumpImage = true; + if (expectedHash.length() > 0) { + ASSERT(expectedHash.length() == 32); + + printf("\nExpectedHash: %s\n", expectedHash.c_str()); + + if (expectedHash == actualHash) // FIXME: do case insensitive compare + dumpImage = false; + } + + if (dumpImage) + dumpBitmap(context.get()); +} + +void printPNG(const unsigned char* data, const size_t dataLength) +{ + printf("Content-Type: %s\n", "image/png"); + printf("Content-Length: %lu\n", static_cast<unsigned long>(dataLength)); + + const size_t bytesToWriteInOneChunk = 1 << 15; + size_t dataRemainingToWrite = dataLength; + 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; + } +} diff --git a/WebKitTools/DumpRenderTree/PixelDumpSupport.h b/WebKitTools/DumpRenderTree/PixelDumpSupport.h index d4f8948..94c5312 100644 --- a/WebKitTools/DumpRenderTree/PixelDumpSupport.h +++ b/WebKitTools/DumpRenderTree/PixelDumpSupport.h @@ -31,7 +31,15 @@ #include <string> +#include <wtf/PassRefPtr.h> + +class BitmapContext; + +void computeMD5HashStringForBitmapContext(BitmapContext*, char hashString[33]); +PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool onscreen, bool incrementalRepaint, bool sweepHorizontally, bool drawSelectionRect); +void dumpBitmap(BitmapContext*); void dumpWebViewAsPixelsAndCompareWithExpected(const std::string& expectedHash); +void printPNG(const unsigned char* data, const size_t dataLength); #if PLATFORM(MAC) diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp index e321fee..3a04c3c 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp @@ -1,5 +1,6 @@ /* * Copyright (C) 2006, 2007, 2008 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 @@ -27,11 +28,52 @@ #include "TestObject.h" #include <assert.h> +#include <stdarg.h> #include <stdio.h> #include <string.h> #include <stdlib.h> +void pluginLog(NPP instance, const char* format, ...) +{ + va_list args; + va_start(args, format); + char message[2048] = "PLUGIN: "; + vsprintf(message + strlen(message), format, args); + va_end(args); + + NPObject* windowObject = 0; + NPError error = browser->getvalue(instance, NPNVWindowNPObject, &windowObject); + if (error != NPERR_NO_ERROR) { + fprintf(stderr, "Failed to retrieve window object while logging: %s\n", message); + return; + } + + NPVariant consoleVariant; + if (!browser->getproperty(instance, windowObject, browser->getstringidentifier("console"), &consoleVariant)) { + fprintf(stderr, "Failed to retrieve console object while logging: %s\n", message); + browser->releaseobject(windowObject); + return; + } + + NPObject* consoleObject = NPVARIANT_TO_OBJECT(consoleVariant); + + NPVariant messageVariant; + STRINGZ_TO_NPVARIANT(message, messageVariant); + + NPVariant result; + if (!browser->invoke(instance, consoleObject, browser->getstringidentifier("log"), &messageVariant, 1, &result)) { + fprintf(stderr, "Failed to invoke console.log while logging: %s\n", message); + browser->releaseobject(consoleObject); + browser->releaseobject(windowObject); + return; + } + + browser->releasevariantvalue(&result); + browser->releaseobject(consoleObject); + browser->releaseobject(windowObject); +} + static void pluginInvalidate(NPObject*); static bool pluginHasProperty(NPObject*, NPIdentifier name); static bool pluginHasMethod(NPObject*, NPIdentifier name); @@ -82,25 +124,29 @@ static const NPUTF8 *pluginPropertyIdentifierNames[NUM_PROPERTY_IDENTIFIERS] = { "returnErrorFromNewStream", }; -#define ID_TEST_CALLBACK_METHOD 0 -#define ID_TEST_GETURL 1 -#define ID_REMOVE_DEFAULT_METHOD 2 -#define ID_TEST_DOM_ACCESS 3 -#define ID_TEST_GET_URL_NOTIFY 4 -#define ID_TEST_INVOKE_DEFAULT 5 -#define ID_DESTROY_STREAM 6 -#define ID_TEST_ENUMERATE 7 -#define ID_TEST_GETINTIDENTIFIER 8 -#define ID_TEST_GET_PROPERTY 9 -#define ID_TEST_EVALUATE 10 -#define ID_TEST_GET_PROPERTY_RETURN_VALUE 11 -#define ID_TEST_IDENTIFIER_TO_STRING 12 -#define ID_TEST_IDENTIFIER_TO_INT 13 -#define ID_TEST_POSTURL_FILE 14 -#define ID_TEST_CONSTRUCT 15 -#define ID_TEST_THROW_EXCEPTION_METHOD 16 -#define ID_DESTROY_NULL_STREAM 17 -#define NUM_METHOD_IDENTIFIERS 18 +enum { + ID_TEST_CALLBACK_METHOD = 0, + ID_TEST_GETURL, + ID_REMOVE_DEFAULT_METHOD, + ID_TEST_DOM_ACCESS, + ID_TEST_GET_URL_NOTIFY, + ID_TEST_INVOKE_DEFAULT, + ID_DESTROY_STREAM, + ID_TEST_ENUMERATE, + ID_TEST_GETINTIDENTIFIER, + ID_TEST_GET_PROPERTY, + ID_TEST_HAS_PROPERTY, + ID_TEST_HAS_METHOD, + ID_TEST_EVALUATE, + ID_TEST_GET_PROPERTY_RETURN_VALUE, + ID_TEST_IDENTIFIER_TO_STRING, + ID_TEST_IDENTIFIER_TO_INT, + ID_TEST_POSTURL_FILE, + ID_TEST_CONSTRUCT, + ID_TEST_THROW_EXCEPTION_METHOD, + ID_DESTROY_NULL_STREAM, + NUM_METHOD_IDENTIFIERS +}; static NPIdentifier pluginMethodIdentifiers[NUM_METHOD_IDENTIFIERS]; static const NPUTF8 *pluginMethodIdentifierNames[NUM_METHOD_IDENTIFIERS] = { @@ -114,6 +160,8 @@ static const NPUTF8 *pluginMethodIdentifierNames[NUM_METHOD_IDENTIFIERS] = { "testEnumerate", "testGetIntIdentifier", "testGetProperty", + "testHasProperty", + "testHasMethod", "testEvaluate", "testGetPropertyReturnValue", "testIdentifierToString", @@ -467,6 +515,36 @@ static bool testGetProperty(PluginObject* obj, const NPVariant* args, uint32_t a return false; } +static bool testHasProperty(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount != 2 || !NPVARIANT_IS_OBJECT(args[0]) || !NPVARIANT_IS_STRING(args[1])) + return false; + + NPUTF8* propertyString = createCStringFromNPVariant(&args[1]); + NPIdentifier propertyIdentifier = browser->getstringidentifier(propertyString); + free(propertyString); + + bool retval = browser->hasproperty(obj->npp, NPVARIANT_TO_OBJECT(args[0]), propertyIdentifier); + + BOOLEAN_TO_NPVARIANT(retval, *result); + return true; +} + +static bool testHasMethod(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) +{ + if (argCount != 2 || !NPVARIANT_IS_OBJECT(args[0]) || !NPVARIANT_IS_STRING(args[1])) + return false; + + NPUTF8* propertyString = createCStringFromNPVariant(&args[1]); + NPIdentifier propertyIdentifier = browser->getstringidentifier(propertyString); + free(propertyString); + + bool retval = browser->hasmethod(obj->npp, NPVARIANT_TO_OBJECT(args[0]), propertyIdentifier); + + BOOLEAN_TO_NPVARIANT(retval, *result); + return true; +} + static bool testEvaluate(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result) { if (argCount != 1 || !NPVARIANT_IS_STRING(args[0])) @@ -576,6 +654,10 @@ static bool pluginInvoke(NPObject* header, NPIdentifier name, const NPVariant* a return testGetProperty(plugin, args, argCount, result); else if (name == pluginMethodIdentifiers[ID_TEST_GET_PROPERTY_RETURN_VALUE]) return testGetPropertyReturnValue(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_HAS_PROPERTY]) + return testHasProperty(plugin, args, argCount, result); + else if (name == pluginMethodIdentifiers[ID_TEST_HAS_METHOD]) + return testHasMethod(plugin, args, argCount, result); else if (name == pluginMethodIdentifiers[ID_TEST_IDENTIFIER_TO_STRING]) return testIdentifierToString(plugin, args, argCount, result); else if (name == pluginMethodIdentifiers[ID_TEST_IDENTIFIER_TO_INT]) diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h index 77c35e0..17b11e1 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h @@ -53,3 +53,4 @@ extern NPClass *getPluginClass(void); extern void handleCallback(PluginObject* object, const char *url, NPReason reason, void *notifyData); extern void notifyStream(PluginObject* object, const char *url, const char *headers); extern void testNPRuntime(NPP npp); +extern void pluginLog(NPP instance, const char* format, ...); diff --git a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp index c764cfd..704ba09 100644 --- a/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp +++ b/WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp @@ -25,46 +25,6 @@ #import "PluginObject.h" -static void log(NPP instance, const char* format, ...) -{ - va_list args; - va_start(args, format); - char message[2048] = "PLUGIN: "; - vsprintf(message + strlen(message), format, args); - va_end(args); - - NPObject* windowObject = 0; - NPError error = browser->getvalue(instance, NPNVWindowNPObject, &windowObject); - if (error != NPERR_NO_ERROR) { - fprintf(stderr, "Failed to retrieve window object while logging: %s\n", message); - return; - } - - NPVariant consoleVariant; - if (!browser->getproperty(instance, windowObject, browser->getstringidentifier("console"), &consoleVariant)) { - fprintf(stderr, "Failed to retrieve console object while logging: %s\n", message); - browser->releaseobject(windowObject); - return; - } - - NPObject* consoleObject = NPVARIANT_TO_OBJECT(consoleVariant); - - NPVariant messageVariant; - STRINGZ_TO_NPVARIANT(message, messageVariant); - - NPVariant result; - if (!browser->invoke(instance, consoleObject, browser->getstringidentifier("log"), &messageVariant, 1, &result)) { - fprintf(stderr, "Failed to invoke console.log while logging: %s\n", message); - browser->releaseobject(consoleObject); - browser->releaseobject(windowObject); - return; - } - - browser->releasevariantvalue(&result); - browser->releaseobject(consoleObject); - browser->releaseobject(windowObject); -} - // Mach-o entry points extern "C" { NPError NP_Initialize(NPNetscapeFuncs *browserFuncs); @@ -137,33 +97,34 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, ch testNPRuntime(instance); else if (strcasecmp(argn[i], "forcecarbon") == 0) forceCarbon = true; + else if (strcasecmp(argn[i], "logSrc") == 0) { + for (int i = 0; i < argc; i++) + if (strcasecmp(argn[i], "src") == 0) + pluginLog(instance, "src: %s", argv[i]); + } } - - if (forceCarbon) { - NPBool supportsCarbon; +#ifndef NP_NO_CARBON + NPBool supportsCarbon = false; +#endif + NPBool supportsCocoa = false; #ifndef NP_NO_CARBON - if (browser->getvalue(instance, NPNVsupportsCarbonBool, &supportsCarbon) != NPERR_NO_ERROR) - supportsCarbon = false; -#else + if (browser->getvalue(instance, NPNVsupportsCarbonBool, &supportsCarbon) != NPERR_NO_ERROR) supportsCarbon = false; #endif - if (!supportsCarbon) - return NPERR_INCOMPATIBLE_VERSION_ERROR; + if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) + supportsCocoa = false; + + if (supportsCocoa && !forceCarbon) { + obj->eventModel = NPEventModelCocoa; #ifndef NP_NO_CARBON + } else if (supportsCarbon) { obj->eventModel = NPEventModelCarbon; #endif } else { - NPBool supportsCocoa; - if (browser->getvalue(instance, NPNVsupportsCocoaBool, &supportsCocoa) != NPERR_NO_ERROR) - supportsCocoa = FALSE; - - if (!supportsCocoa) - return NPERR_INCOMPATIBLE_VERSION_ERROR; - - obj->eventModel = NPEventModelCocoa; + return NPERR_INCOMPATIBLE_VERSION_ERROR; } browser->setvalue(instance, NPPVpluginEventModel, (void *)obj->eventModel); @@ -184,7 +145,7 @@ NPError NPP_Destroy(NPP instance, NPSavedData **save) free(obj->onURLNotify); if (obj->logDestroy) - log(instance, "NPP_Destroy"); + pluginLog(instance, "NPP_Destroy"); browser->releaseobject(&obj->header); } @@ -197,7 +158,7 @@ NPError NPP_SetWindow(NPP instance, NPWindow *window) if (obj) { if (obj->logSetWindow) { - log(instance, "NPP_SetWindow: %d %d", (int)window->width, (int)window->height); + pluginLog(instance, "NPP_SetWindow: %d %d", (int)window->width, (int)window->height); obj->logSetWindow = false; } } @@ -276,29 +237,29 @@ static int16_t handleEventCarbon(NPP instance, PluginObject* obj, EventRecord* e break; case mouseDown: GlobalToLocal(&pt); - log(instance, "mouseDown at (%d, %d)", pt.h, pt.v); + pluginLog(instance, "mouseDown at (%d, %d)", pt.h, pt.v); break; case mouseUp: GlobalToLocal(&pt); - log(instance, "mouseUp at (%d, %d)", pt.h, pt.v); + pluginLog(instance, "mouseUp at (%d, %d)", pt.h, pt.v); break; case keyDown: - log(instance, "keyDown '%c'", (char)(event->message & 0xFF)); + pluginLog(instance, "keyDown '%c'", (char)(event->message & 0xFF)); break; case keyUp: - log(instance, "keyUp '%c'", (char)(event->message & 0xFF)); + pluginLog(instance, "keyUp '%c'", (char)(event->message & 0xFF)); break; case autoKey: - log(instance, "autoKey '%c'", (char)(event->message & 0xFF)); + pluginLog(instance, "autoKey '%c'", (char)(event->message & 0xFF)); break; case updateEvt: - log(instance, "updateEvt"); + pluginLog(instance, "updateEvt"); break; case diskEvt: - log(instance, "diskEvt"); + pluginLog(instance, "diskEvt"); break; case activateEvt: - log(instance, "activateEvt"); + pluginLog(instance, "activateEvt"); break; case osEvt: printf("PLUGIN: osEvt - "); @@ -314,20 +275,20 @@ static int16_t handleEventCarbon(NPP instance, PluginObject* obj, EventRecord* e } break; case kHighLevelEvent: - log(instance, "kHighLevelEvent"); + pluginLog(instance, "kHighLevelEvent"); break; // NPAPI events case getFocusEvent: - log(instance, "getFocusEvent"); + pluginLog(instance, "getFocusEvent"); break; case loseFocusEvent: - log(instance, "loseFocusEvent"); + pluginLog(instance, "loseFocusEvent"); break; case adjustCursorEvent: - log(instance, "adjustCursorEvent"); + pluginLog(instance, "adjustCursorEvent"); break; default: - log(instance, "event %d", event->what); + pluginLog(instance, "event %d", event->what); } return 0; @@ -341,9 +302,9 @@ static int16_t handleEventCocoa(NPP instance, PluginObject* obj, NPCocoaEvent* e case NPCocoaEventFocusChanged: if (event->data.focus.hasFocus) - log(instance, "getFocusEvent"); + pluginLog(instance, "getFocusEvent"); else - log(instance, "loseFocusEvent"); + pluginLog(instance, "loseFocusEvent"); return 1; case NPCocoaEventDrawRect: @@ -355,12 +316,12 @@ static int16_t handleEventCocoa(NPP instance, PluginObject* obj, NPCocoaEvent* e return 1; case NPCocoaEventMouseDown: - log(instance, "mouseDown at (%d, %d)", + pluginLog(instance, "mouseDown at (%d, %d)", (int)event->data.mouse.pluginX, (int)event->data.mouse.pluginY); return 1; case NPCocoaEventMouseUp: - log(instance, "mouseUp at (%d, %d)", + pluginLog(instance, "mouseUp at (%d, %d)", (int)event->data.mouse.pluginX, (int)event->data.mouse.pluginY); return 1; diff --git a/WebKitTools/DumpRenderTree/WorkQueue.cpp b/WebKitTools/DumpRenderTree/WorkQueue.cpp index 0891b9c..0106fba 100644 --- a/WebKitTools/DumpRenderTree/WorkQueue.cpp +++ b/WebKitTools/DumpRenderTree/WorkQueue.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -87,3 +87,18 @@ void WorkQueue::clear() startOfQueue = 0; endOfQueue = 0; } + +bool WorkQueue::processWork() +{ + bool startedLoad = false; + + while (!startedLoad && count()) { + WorkQueueItem* item = dequeue(); + ASSERT(item); + startedLoad = item->invoke(); + delete item; + } + + // If we're done and we didn't start a load, then we're really done, so return true. + return !startedLoad; +} diff --git a/WebKitTools/DumpRenderTree/WorkQueue.h b/WebKitTools/DumpRenderTree/WorkQueue.h index c2850c5..649c6c1 100644 --- a/WebKitTools/DumpRenderTree/WorkQueue.h +++ b/WebKitTools/DumpRenderTree/WorkQueue.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -42,6 +42,8 @@ public: void setFrozen(bool b) { m_frozen = b; } + bool processWork(); // Returns true if all work is done, false if we started a load. + private: WorkQueue(); diff --git a/WebKitTools/DumpRenderTree/WorkQueueItem.h b/WebKitTools/DumpRenderTree/WorkQueueItem.h index fd15329..56be377 100644 --- a/WebKitTools/DumpRenderTree/WorkQueueItem.h +++ b/WebKitTools/DumpRenderTree/WorkQueueItem.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -35,7 +35,7 @@ class WorkQueueItem { public: virtual ~WorkQueueItem() { } - virtual void invoke() const = 0; + virtual bool invoke() const = 0; // Returns true if this started a load. }; class LoadItem : public WorkQueueItem { @@ -46,46 +46,64 @@ public: { } - const JSStringRef url() const { return m_url.get(); } - const JSStringRef target() const { return m_target.get(); } - - virtual void invoke() const; - private: + virtual bool invoke() const; + JSRetainPtr<JSStringRef> m_url; JSRetainPtr<JSStringRef> m_target; }; class ReloadItem : public WorkQueueItem { -public: - virtual void invoke() const; +private: + virtual bool invoke() const; }; class ScriptItem : public WorkQueueItem { -public: +protected: ScriptItem(const JSStringRef script) : m_script(script) { } - const JSStringRef script() const { return m_script.get(); } - - virtual void invoke() const; +protected: + virtual bool invoke() const; private: JSRetainPtr<JSStringRef> m_script; }; -class BackForwardItem : public WorkQueueItem { +class LoadingScriptItem : public ScriptItem { public: - virtual void invoke() const; + LoadingScriptItem(const JSStringRef script) + : ScriptItem(script) + { + } +private: + virtual bool invoke() const { return ScriptItem::invoke(); } +}; + +class NonLoadingScriptItem : public ScriptItem { +public: + NonLoadingScriptItem(const JSStringRef script) + : ScriptItem(script) + { + } + +private: + virtual bool invoke() const { ScriptItem::invoke(); return false; } +}; + +class BackForwardItem : public WorkQueueItem { protected: BackForwardItem(int howFar) : m_howFar(howFar) { } +private: + virtual bool invoke() const; + int m_howFar; }; diff --git a/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp new file mode 100644 index 0000000..889b7b3 --- /dev/null +++ b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp @@ -0,0 +1,97 @@ +/*
+ * 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.
+ */
+
+#include "config.h"
+#include "PixelDumpSupportCairo.h"
+
+#include "DumpRenderTree.h"
+#include "PixelDumpSupport.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"
+#endif
+
+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)
+{
+ 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);
+}
+
+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 = pixelsWide * cairo_image_surface_get_stride(surface);
+
+ MD5_CTX md5Context;
+ MD5_Init(&md5Context);
+ unsigned char* bitmapData = static_cast<unsigned char*>(cairo_image_surface_get_data(surface));
+ 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)
+{
+ cairo_surface_t* surface = cairo_get_target(context->cairoContext());
+ printPNG(surface);
+}
diff --git a/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.h b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.h new file mode 100644 index 0000000..d1a0c3f --- /dev/null +++ b/WebKitTools/DumpRenderTree/cairo/PixelDumpSupportCairo.h @@ -0,0 +1,83 @@ +/* + * 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> +#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) + { + if (m_context) + cairo_destroy(m_context); + + m_context = context; + } + + PlatformBitmapBuffer m_buffer; + cairo_t* m_context; + +}; + +#endif // PixelDumpSupportCairo_h diff --git a/WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp b/WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp index e6da06f..593ba64 100644 --- a/WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp +++ b/WebKitTools/DumpRenderTree/cg/ImageDiffCG.cpp @@ -87,25 +87,20 @@ static void releaseMallocBuffer(void* info, const void* data, size_t size) static RetainPtr<CGImageRef> createDifferenceImage(CGImageRef baseImage, CGImageRef testImage, float& difference) { - static RetainPtr<CGColorSpaceRef> colorSpace(AdoptCF, CGColorSpaceCreateDeviceRGB()); - RetainPtr<CGImageRef> diffImage; - size_t width = CGImageGetWidth(baseImage); size_t height = CGImageGetHeight(baseImage); size_t rowBytes = width * 4; - + // Draw base image in bitmap context void* baseBuffer = calloc(height, rowBytes); - CGContextRef baseContext = CGBitmapContextCreate(baseBuffer, width, height, 8, rowBytes, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host); - CGContextDrawImage(baseContext, CGRectMake(0, 0, width, height), baseImage); - CGContextRelease(baseContext); - + 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); - CGContextRef context = CGBitmapContextCreate(buffer, width, height, 8, rowBytes, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host); - CGContextDrawImage(context, CGRectMake(0, 0, width, height), testImage); - CGContextRelease(context); - + 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; @@ -141,7 +136,8 @@ static RetainPtr<CGImageRef> createDifferenceImage(CGImageRef baseImage, CGImage 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) { @@ -150,11 +146,9 @@ static RetainPtr<CGImageRef> createDifferenceImage(CGImageRef baseImage, CGImage diff[p] = diff[p] / maxDistance; } - CGDataProviderRef provider = CGDataProviderCreateWithData(0, diffBuffer, width * height, releaseMallocBuffer); - CGColorSpaceRef diffColorspace = CGColorSpaceCreateDeviceGray(); - diffImage.adoptCF(CGImageCreate(width, height, 8, 8, width, diffColorspace, 0, provider, 0, false, kCGRenderingIntentDefault)); - CGColorSpaceRelease(diffColorspace); - CGDataProviderRelease(provider); + 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); diff --git a/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp b/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp index 5dd505a..5cf32f1 100644 --- a/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp +++ b/WebKitTools/DumpRenderTree/cg/PixelDumpSupportCG.cpp @@ -32,7 +32,7 @@ #include "PixelDumpSupportCG.h" #include "DumpRenderTree.h" -#include "LayoutTestController.h" +#include "PixelDumpSupport.h" #include <ImageIO/CGImageDestination.h> #include <algorithm> #include <ctype.h> @@ -65,23 +65,13 @@ static void printPNG(CGImageRef image) const UInt8* data = CFDataGetBytePtr(imageData.get()); CFIndex dataLength = CFDataGetLength(imageData.get()); - printf("Content-Type: %s\n", "image/png"); - printf("Content-Length: %lu\n", static_cast<unsigned long>(dataLength)); - - const size_t bytesToWriteInOneChunk = 1 << 15; - size_t dataRemainingToWrite = dataLength; - while (dataRemainingToWrite) { - size_t bytesToWriteInThisChunk = min(dataRemainingToWrite, bytesToWriteInOneChunk); - size_t bytesWritten = fwrite(data, 1, bytesToWriteInThisChunk, stdout); - if (bytesWritten != bytesToWriteInThisChunk) - break; - dataRemainingToWrite -= bytesWritten; - data += bytesWritten; - } + printPNG(static_cast<const unsigned char*>(data), static_cast<size_t>(dataLength)); } -static void computeMD5HashStringForBitmapContext(CGContextRef bitmapContext, char hashString[33]) +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); @@ -116,31 +106,8 @@ static void computeMD5HashStringForBitmapContext(CGContextRef bitmapContext, cha snprintf(hashString, 33, "%s%02x", hashString, hash[i]); } -void dumpWebViewAsPixelsAndCompareWithExpected(const std::string& expectedHash) +void dumpBitmap(BitmapContext* context) { - RefPtr<BitmapContext> context; - - context = createBitmapContextFromWebView(gLayoutTestController->testOnscreen(), gLayoutTestController->testRepaint(), gLayoutTestController->testRepaintSweepHorizontally(), gLayoutTestController->dumpSelectionRect()); - ASSERT(context); - - // Compute the hash of the bitmap context pixels - char actualHash[33]; - computeMD5HashStringForBitmapContext(context->cgContext(), actualHash); - printf("\nActualHash: %s\n", actualHash); - - // Check the computed hash against the expected one and dump image on mismatch - bool dumpImage = true; - if (expectedHash.length() > 0) { - ASSERT(expectedHash.length() == 32); - - printf("\nExpectedHash: %s\n", expectedHash.c_str()); - - if (expectedHash == actualHash) // FIXME: do case insensitive compare - dumpImage = false; - } - - if (dumpImage) { - RetainPtr<CGImageRef> image(AdoptCF, CGBitmapContextCreateImage(context->cgContext())); - printPNG(image.get()); - } + RetainPtr<CGImageRef> image(AdoptCF, CGBitmapContextCreateImage(context->cgContext())); + printPNG(image.get()); } diff --git a/WebKitTools/DumpRenderTree/config.h b/WebKitTools/DumpRenderTree/config.h index 4775ae2..063eeea 100644 --- a/WebKitTools/DumpRenderTree/config.h +++ b/WebKitTools/DumpRenderTree/config.h @@ -26,8 +26,29 @@ #include <wtf/Platform.h> +#ifdef __cplusplus +#undef new +#undef delete +#include <wtf/FastMalloc.h> +#endif + +#if PLATFORM(WIN_OS) && !COMPILER(GCC) +#define JS_EXPORTDATA __declspec(dllimport) +#define WEBKIT_EXPORTDATA __declspec(dllimport) +#else +#define JS_EXPORTDATA +#define WEBKIT_EXPORTDATA +#endif + #if PLATFORM(WIN) #define WTF_PLATFORM_CF 1 +#if defined(WIN_CAIRO) +#define WTF_PLATFORM_CAIRO 1 +#define WTF_USE_CURL 1 +#else +#define WTF_PLATFORM_CG 1 +#define WTF_USE_CFNETWORK 1 +#endif #undef _WIN32_WINNT #define _WIN32_WINNT 0x0500 diff --git a/WebKitTools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp b/WebKitTools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp new file mode 100644 index 0000000..ab92e1d --- /dev/null +++ b/WebKitTools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp @@ -0,0 +1,63 @@ +/* + * 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 "AccessibilityController.h" + +#include "AccessibilityUIElement.h" +#include "DumpRenderTree.h" + +#include <atk/atk.h> +#include <gtk/gtk.h> +#include <webkit/webkit.h> + +extern "C" { +extern AtkObject* webkit_web_frame_get_focused_accessible_element(WebKitWebFrame*); +} + +AccessibilityController::AccessibilityController() +{ +} + +AccessibilityController::~AccessibilityController() +{ +} + +AccessibilityUIElement AccessibilityController::focusedElement() +{ + AtkObject* accessible = webkit_web_frame_get_focused_accessible_element(mainFrame); + if (!accessible) + return 0; + + return AccessibilityUIElement(accessible); +} + +AccessibilityUIElement AccessibilityController::rootElement() +{ + WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); + AtkObject* axObject = gtk_widget_get_accessible(GTK_WIDGET(view)); + return AccessibilityUIElement(axObject); +} diff --git a/WebKitTools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp b/WebKitTools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp new file mode 100644 index 0000000..be1bbed --- /dev/null +++ b/WebKitTools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp @@ -0,0 +1,417 @@ +/* + * 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 <JavaScriptCore/JSStringRef.h> +#include <wtf/Assertions.h> + +#include <atk/atk.h> +#include <gtk/gtk.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>& 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 location, unsigned length) +{ + for (unsigned i = location; i < length; i++) { + AtkObject* child = atk_object_ref_accessible_child(ATK_OBJECT(m_element), i); + elementVector.append(AccessibilityUIElement(child)); + } +} + +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) +{ + // FIXME: implement + return 0; +} + +AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index) +{ + Vector<AccessibilityUIElement> children; + getChildrenWithRange(children, index, 1); + + if (children.size() == 1) + return children.at(0); + + return 0; +} + +JSStringRef AccessibilityUIElement::allAttributes() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +JSStringRef AccessibilityUIElement::attributesOfDocumentLinks() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +AccessibilityUIElement AccessibilityUIElement::titleUIElement() +{ + // FIXME: implement + return 0; +} + +AccessibilityUIElement AccessibilityUIElement::parentElement() +{ + ASSERT(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); + + return JSStringCreateWithUTF8CString(atk_role_get_name(role)); +} + +JSStringRef AccessibilityUIElement::title() +{ + const gchar* name = atk_object_get_name(ATK_OBJECT(m_element)); + + if (!name) + return JSStringCreateWithCharacters(0, 0); + + return JSStringCreateWithUTF8CString(name); +} + +JSStringRef AccessibilityUIElement::description() +{ + const gchar* description = atk_object_get_description(ATK_OBJECT(m_element)); + + if (!description) + return JSStringCreateWithCharacters(0, 0); + + return JSStringCreateWithUTF8CString(description); +} + +JSStringRef AccessibilityUIElement::language() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +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() +{ + return 0.f; +} + +double AccessibilityUIElement::clickPointY() +{ + return 0.f; +} + + +double AccessibilityUIElement::intValue() +{ + 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_DOUBLE(&value)) + return g_value_get_double(&value); + else if (G_VALUE_HOLDS_INT(&value)) + return static_cast<double>(g_value_get_int(&value)); + else + return 0.0f; +} + +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_DOUBLE(&value)) + return g_value_get_double(&value); + else if (G_VALUE_HOLDS_INT(&value)) + return static_cast<double>(g_value_get_int(&value)); + else + return 0.0f; +} + +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_DOUBLE(&value)) + return g_value_get_double(&value); + else if (G_VALUE_HOLDS_INT(&value)) + return static_cast<double>(g_value_get_int(&value)); + else + return 0.0f; +} + +JSStringRef AccessibilityUIElement::valueDescription() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +bool AccessibilityUIElement::isEnabled() +{ + // FIXME: implement + return false; +} + + +int AccessibilityUIElement::insertionPointLineNumber() +{ + // FIXME: implement + return 0; +} + +bool AccessibilityUIElement::isActionSupported(JSStringRef action) +{ + // FIXME: implement + return false; +} + +bool AccessibilityUIElement::isRequired() const +{ + // FIXME: implement + return false; +} + +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; +} + +JSStringRef AccessibilityUIElement::rowIndexRange() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +JSStringRef AccessibilityUIElement::columnIndexRange() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +int AccessibilityUIElement::lineForIndex(int) +{ + // FIXME: implement + return 0; +} + +JSStringRef AccessibilityUIElement::boundsForRange(unsigned location, unsigned length) +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned column, unsigned row) +{ + // FIXME: implement + return 0; +} + +JSStringRef AccessibilityUIElement::selectedTextRange() +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length) +{ + // FIXME: implement +} + +JSStringRef AccessibilityUIElement::attributeValue(JSStringRef attribute) +{ + // FIXME: implement + return JSStringCreateWithCharacters(0, 0); +} + +bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute) +{ + // FIXME: implement + return false; +} + +void AccessibilityUIElement::increment() +{ + // FIXME: implement +} + +void AccessibilityUIElement::decrement() +{ + // FIXME: implement +} diff --git a/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp index d7f220b..ac82dd8 100644 --- a/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp +++ b/WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp @@ -31,6 +31,8 @@ #include "config.h" #include "DumpRenderTree.h" +#include "AccessibilityController.h" +#include "GCController.h" #include "LayoutTestController.h" #include "WorkQueue.h" #include "WorkQueueItem.h" @@ -58,6 +60,8 @@ extern gchar* webkit_web_frame_get_inner_text(WebKitWebFrame* frame); extern gchar* webkit_web_frame_dump_render_tree(WebKitWebFrame* frame); 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); +extern void webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame); +extern void webkit_web_view_set_group_name(WebKitWebView* view, const gchar* groupName); } volatile bool done; @@ -65,11 +69,18 @@ static bool printSeparators; static int dumpPixels; static int dumpTree = 1; +AccessibilityController* axController = 0; LayoutTestController* gLayoutTestController = 0; +static GCController* gcController = 0; static WebKitWebView* webView; +static GtkWidget* container; 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; @@ -130,7 +141,7 @@ static gchar* dumpFramesAsText(WebKitWebFrame* frame) if (gLayoutTestController->dumpChildFramesAsText()) { GSList* children = webkit_web_frame_get_children(frame); for (GSList* child = children; child; child = g_slist_next(child)) - appendString(result, dumpFramesAsText((WebKitWebFrame*)children->data)); + appendString(result, dumpFramesAsText(static_cast<WebKitWebFrame* >(child->data))); g_slist_free(children); } @@ -154,9 +165,27 @@ static void dumpHistoryItem(WebKitWebHistoryItem* item, int indent, bool current } for (int i = start; i < indent; i++) putchar(' '); - printf("%s", webkit_web_history_item_get_uri(item)); + + // 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) + 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); + const gchar* target = webkit_web_history_item_get_target(item); - if (target && g_utf8_strlen(target, 0) > 0) + if (target && strlen(target) > 0) printf(" (in frame \"%s\")", target); if (webkit_web_history_item_is_target_item(item)) printf(" **nav target**"); @@ -212,12 +241,25 @@ static void dumpBackForwardListForWebView(WebKitWebView* view) 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. + GSList* viewList = g_slist_reverse(webViewList); + for (unsigned i = 0; i < g_slist_length(viewList); ++i) + dumpBackForwardListForWebView(WEBKIT_WEB_VIEW(g_slist_nth_data(viewList, i))); +} + static void invalidateAnyPreviousWaitToDumpWatchdog() { if (waitToDumpWatchdog) { g_source_remove(waitToDumpWatchdog); waitToDumpWatchdog = 0; } + + waitForPolicy = false; } static void resetWebViewToConsistentStateBeforeTesting() @@ -226,8 +268,16 @@ static void resetWebViewToConsistentStateBeforeTesting() g_object_set(G_OBJECT(settings), "enable-private-browsing", FALSE, "enable-developer-extras", FALSE, + "enable-spell-checking", TRUE, + "enable-html5-database", TRUE, + "enable-html5-local-storage", TRUE, + "enable-xss-auditor", FALSE, + "javascript-can-open-windows-automatically", TRUE, + "enable-offline-web-application-cache", TRUE, NULL); + webkit_web_frame_clear_main_frame_name(mainFrame); + WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView); g_object_set(G_OBJECT(inspector), "javascript-profiling-enabled", FALSE, NULL); } @@ -241,10 +291,15 @@ void dump() char* result = 0; gchar* responseMimeType = webkit_web_frame_get_response_mime_type(mainFrame); - dumpAsText = g_ascii_strcasecmp(responseMimeType, "text/plain"); + dumpAsText = g_str_equal(responseMimeType, "text/plain"); g_free(responseMimeType); - gLayoutTestController->setDumpAsText(dumpAsText); + // Test can request controller to be dumped as text even + // while test's response mime type is not text/plain. + // Overriding this behavior with dumpAsText being false is a bad idea. + if (dumpAsText) + gLayoutTestController->setDumpAsText(dumpAsText); + if (gLayoutTestController->dumpAsText()) result = dumpFramesAsText(mainFrame); else @@ -267,11 +322,8 @@ void dump() if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive()) dumpFrameScrollPosition(mainFrame); - if (gLayoutTestController->dumpBackForwardList()) { - // FIXME: multiple windows support - dumpBackForwardListForWebView(webView); - - } + if (gLayoutTestController->dumpBackForwardList()) + dumpBackForwardListForAllWebViews(); } if (printSeparators) { @@ -312,6 +364,11 @@ static void setDefaultsToConsistentStateValuesForTesting() "default-monospace-font-size", 13, "minimum-font-size", 1, NULL); + + /* Disable the default auth dialog for testing */ + SoupSession* session = webkit_get_default_session(); + soup_session_remove_feature_by_type(session, WEBKIT_TYPE_SOUP_AUTH_DIALOG); + #if PLATFORM(X11) webkit_web_settings_add_extra_plugin_directory(webView, TEST_PLUGIN_DIR); #endif @@ -352,7 +409,7 @@ static void runTest(const string& testPathOrURL) GtkAllocation size; size.width = isSVGW3CTest ? 480 : maxViewWidth; size.height = isSVGW3CTest ? 360 : maxViewHeight; - gtk_widget_size_allocate(GTK_WIDGET(webView), &size); + gtk_widget_size_allocate(container, &size); if (prevTestBFItem) g_object_unref(prevTestBFItem); @@ -370,6 +427,17 @@ static void runTest(const string& testPathOrURL) while (!done) g_main_context_iteration(NULL, TRUE); + + // Also check if we still have opened webViews and free them. + if (gLayoutTestController->closeRemainingWindowsWhenComplete() || webViewList) { + while (webViewList) { + g_object_unref(WEBKIT_WEB_VIEW(webViewList->data)); + webViewList = g_slist_next(webViewList); + } + g_slist_free(webViewList); + webViewList = 0; + } + // A blank load seems to be necessary to reset state after certain tests. webkit_web_view_open(webView, "about:blank"); @@ -387,16 +455,8 @@ void webViewLoadStarted(WebKitWebView* view, WebKitWebFrame* frame, void*) static gboolean processWork(void* data) { - // quit doing work once a load is in progress - while (WorkQueue::shared()->count() > 0 && !topLoadingFrame) { - WorkQueueItem* item = WorkQueue::shared()->dequeue(); - ASSERT(item); - item->invoke(); - delete item; - } - - // if we didn't start a new load, then we finished all the commands, so we're ready to dump state - if (!topLoadingFrame && !gLayoutTestController->waitToDump()) + // if we finish all the commands, we're ready to dump state + if (WorkQueue::shared()->processWork() && !gLayoutTestController->waitToDump()) dump(); return FALSE; @@ -421,10 +481,17 @@ static void webViewLoadFinished(WebKitWebView* view, WebKitWebFrame* frame, void static void webViewWindowObjectCleared(WebKitWebView* view, WebKitWebFrame* frame, JSGlobalContextRef context, JSObjectRef windowObject, gpointer data) { JSValueRef exception = 0; - assert(gLayoutTestController); + ASSERT(gLayoutTestController); gLayoutTestController->makeWindowObject(context, windowObject, &exception); - assert(!exception); + ASSERT(!exception); + + gcController->makeWindowObject(context, windowObject, &exception); + ASSERT(!exception); + + axController->makeWindowObject(context, windowObject, &exception); + ASSERT(!exception); + } static gboolean webViewConsoleMessage(WebKitWebView* view, const gchar* message, unsigned int line, const gchar* sourceId, gpointer data) @@ -460,6 +527,115 @@ static void webViewTitleChanged(WebKitWebView* view, WebKitWebFrame* frame, cons 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., LayoutTestController::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); + gLayoutTestController->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 (gLayoutTestController->dumpStatusCallbacks()) { + if (message && strcmp(message, "")) + 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 WebKitWebView* webViewCreate(WebKitWebView*, WebKitWebFrame*); + +static WebKitWebView* createWebView() +{ + WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new()); + + // From bug 11756: Use a frame group name for all WebViews created by + // DumpRenderTree to allow testing of cross-page frame lookup. + webkit_web_view_set_group_name(view, "org.webkit.gtk.DumpRenderTree"); + + g_object_connect(G_OBJECT(view), + "signal::load-started", webViewLoadStarted, 0, + "signal::load-finished", webViewLoadFinished, 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, + NULL); + + return view; +} + +static WebKitWebView* webViewCreate(WebKitWebView* view, WebKitWebFrame* frame) +{ + if (!gLayoutTestController->canOpenWindows()) + return 0; + + // Make sure that waitUntilDone has been called. + ASSERT(gLayoutTestController->waitToDump()); + + WebKitWebView* newWebView = createWebView(); + g_object_ref_sink(G_OBJECT(newWebView)); + webViewList = g_slist_prepend(webViewList, newWebView); + return newWebView; +} + int main(int argc, char* argv[]) { g_thread_init(NULL); @@ -482,26 +658,22 @@ int main(int argc, char* argv[]) } GtkWidget* window = gtk_window_new(GTK_WINDOW_POPUP); - GtkContainer* container = GTK_CONTAINER(gtk_fixed_new()); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(container)); + container = GTK_WIDGET(gtk_scrolled_window_new(NULL, NULL)); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(container), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(window), container); gtk_widget_realize(window); - webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); - gtk_container_add(container, GTK_WIDGET(webView)); + webView = createWebView(); + gtk_container_add(GTK_CONTAINER(container), GTK_WIDGET(webView)); gtk_widget_realize(GTK_WIDGET(webView)); + gtk_widget_show_all(container); mainFrame = webkit_web_view_get_main_frame(webView); - g_signal_connect(G_OBJECT(webView), "load-started", G_CALLBACK(webViewLoadStarted), 0); - g_signal_connect(G_OBJECT(webView), "load-finished", G_CALLBACK(webViewLoadFinished), 0); - g_signal_connect(G_OBJECT(webView), "window-object-cleared", G_CALLBACK(webViewWindowObjectCleared), 0); - g_signal_connect(G_OBJECT(webView), "console-message", G_CALLBACK(webViewConsoleMessage), 0); - g_signal_connect(G_OBJECT(webView), "script-alert", G_CALLBACK(webViewScriptAlert), 0); - g_signal_connect(G_OBJECT(webView), "script-prompt", G_CALLBACK(webViewScriptPrompt), 0); - g_signal_connect(G_OBJECT(webView), "script-confirm", G_CALLBACK(webViewScriptConfirm), 0); - g_signal_connect(G_OBJECT(webView), "title-changed", G_CALLBACK(webViewTitleChanged), 0); - setDefaultsToConsistentStateValuesForTesting(); + gcController = new GCController(); + axController = new AccessibilityController(); + if (argc == optind+1 && strcmp(argv[optind], "-") == 0) { char filenameBuffer[2048]; printSeparators = true; @@ -521,5 +693,13 @@ int main(int argc, char* argv[]) runTest(argv[i]); } + delete gcController; + gcController = 0; + + delete axController; + axController = 0; + + g_object_unref(webView); + return 0; } diff --git a/WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h b/WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h index 1d2f179..7a5a4cf 100644 --- a/WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h +++ b/WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h @@ -32,9 +32,13 @@ #include <webkit/webkitdefines.h> #include <JavaScriptCore/JSBase.h> +#include <glib.h> + extern WebKitWebFrame* mainFrame; extern WebKitWebFrame* topLoadingFrame; extern guint waitToDumpWatchdog; +extern bool waitForPolicy; +extern GSList* webViewList; gchar* JSStringCopyUTF8CString(JSStringRef jsString); diff --git a/WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp b/WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp index 35f1685..87eb413 100644 --- a/WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp +++ b/WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp @@ -29,15 +29,26 @@ #include "config.h" #include "GCController.h" +#include <glib.h> +#include <webkit/webkit.h> + +extern "C" { +extern void webkit_gc_collect_javascript_objects(); +extern void webkit_gc_collect_javascript_objects_on_alternate_thread(gboolean waitUntilDone); +extern gsize webkit_gc_count_javascript_objects(); +} + void GCController::collect() const { + webkit_gc_collect_javascript_objects(); } void GCController::collectOnAlternateThread(bool waitUntilDone) const { + webkit_gc_collect_javascript_objects_on_alternate_thread(waitUntilDone); } size_t GCController::getJSObjectCount() const { - return 0; + return webkit_gc_count_javascript_objects(); } diff --git a/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp b/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp index 5c2bae7..009cb97 100644 --- a/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp +++ b/WebKitTools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2007 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> * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -39,12 +40,14 @@ #include <stdio.h> #include <glib.h> +#include <libsoup/soup.h> #include <webkit/webkit.h> extern "C" { bool webkit_web_frame_pause_animation(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element); bool webkit_web_frame_pause_transition(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element); unsigned int webkit_web_frame_number_of_active_animations(WebKitWebFrame* frame); +void webkit_application_cache_set_maximum_size(unsigned long long size); } LayoutTestController::~LayoutTestController() @@ -86,6 +89,11 @@ JSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name) return 0; } +void LayoutTestController::dispatchPendingLoadRequests() +{ + // FIXME: Implement for testing fix for 6727495 +} + void LayoutTestController::display() { displayWebView(); @@ -107,6 +115,7 @@ void LayoutTestController::notifyDone() if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count()) dump(); m_waitToDump = false; + waitForPolicy = false; } JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSStringRef url) @@ -115,30 +124,26 @@ JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSSt return JSStringRetain(url); // Do nothing on Unix. } -void LayoutTestController::queueBackNavigation(int howFarBack) +void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target) { - WorkQueue::shared()->queue(new BackItem(howFarBack)); -} + gchar* relativeURL = JSStringCopyUTF8CString(url); + SoupURI* baseURI = soup_uri_new(webkit_web_frame_get_uri(mainFrame)); -void LayoutTestController::queueForwardNavigation(int howFarForward) -{ - WorkQueue::shared()->queue(new ForwardItem(howFarForward)); -} + SoupURI* absoluteURI = soup_uri_new_with_base(baseURI, relativeURL); + soup_uri_free(baseURI); + g_free(relativeURL); -void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target) -{ - // FIXME: We need to resolve relative URLs here - WorkQueue::shared()->queue(new LoadItem(url, target)); -} + gchar* absoluteCString; + if (absoluteURI) { + absoluteCString = soup_uri_to_string(absoluteURI, FALSE); + soup_uri_free(absoluteURI); + } else + absoluteCString = JSStringCopyUTF8CString(url); -void LayoutTestController::queueReload() -{ - WorkQueue::shared()->queue(new ReloadItem); -} + JSRetainPtr<JSStringRef> absoluteURL(Adopt, JSStringCreateWithUTF8CString(absoluteCString)); + g_free(absoluteCString); -void LayoutTestController::queueScript(JSStringRef script) -{ - WorkQueue::shared()->queue(new ScriptItem(script)); + WorkQueue::shared()->queue(new LoadItem(absoluteURL.get(), target)); } void LayoutTestController::setAcceptsEditing(bool acceptsEditing) @@ -152,6 +157,12 @@ void LayoutTestController::setCustomPolicyDelegate(bool setDelegate, bool permis // FIXME: implement } +void LayoutTestController::waitForPolicyDelegate() +{ + waitForPolicy = true; + setWaitToDump(true); +} + void LayoutTestController::setMainFrameIsFirstResponder(bool flag) { // FIXME: implement @@ -221,8 +232,8 @@ void LayoutTestController::setWaitToDump(bool waitUntilDone) int LayoutTestController::windowCount() { - // FIXME: implement - return 1; + // +1 -> including the main view + return g_slist_length(webViewList) + 1; } void LayoutTestController::setPrivateBrowsingEnabled(bool flag) @@ -234,11 +245,26 @@ void LayoutTestController::setPrivateBrowsingEnabled(bool flag) g_object_set(G_OBJECT(settings), "enable-private-browsing", flag, NULL); } +void LayoutTestController::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 LayoutTestController::setAuthorAndUserStylesEnabled(bool flag) { // FIXME: implement } +void LayoutTestController::disableImageLoading() +{ + // FIXME: Implement for testing fix for https://bugs.webkit.org/show_bug.cgi?id=27896 + // Also need to make sure image loading is re-enabled for each new test. +} + void LayoutTestController::setIconDatabaseEnabled(bool flag) { // FIXME: implement @@ -261,9 +287,14 @@ void LayoutTestController::setSelectTrailingWhitespaceEnabled(bool flag) // FIXME: implement } -void LayoutTestController::setPopupBlockingEnabled(bool popupBlockingEnabled) +void LayoutTestController::setPopupBlockingEnabled(bool flag) { - // FIXME: implement + 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); + } bool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef id) @@ -277,6 +308,11 @@ void LayoutTestController::execCommand(JSStringRef name, JSStringRef value) // FIXME: implement } +void LayoutTestController::setCacheModel(int) +{ + // FIXME: implement +} + bool LayoutTestController::isCommandEnabled(JSStringRef /*name*/) { // FIXME: implement @@ -305,7 +341,7 @@ void LayoutTestController::setDatabaseQuota(unsigned long long quota) void LayoutTestController::setAppCacheMaximumSize(unsigned long long size) { - // FIXME: implement + webkit_application_cache_set_maximum_size(size); } bool LayoutTestController::pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId) diff --git a/WebKitTools/DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp b/WebKitTools/DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp index 9d85476..b7d14eb 100644 --- a/WebKitTools/DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp +++ b/WebKitTools/DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp @@ -1,6 +1,7 @@ /* * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. * Copyright (C) 2008 Zan Dobersek <zandobersek@gmail.com> + * 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 @@ -31,6 +32,7 @@ #include "npruntime.h" #include "npfunctions.h" +#include <stdarg.h> #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -67,6 +69,13 @@ webkit_test_plugin_new_instance(NPMIMEType mimetype, obj->returnErrorFromNewStream = TRUE; else if (strcasecmp(argn[i], "logfirstsetwindow") == 0) obj->logSetWindow = TRUE; + else if (strcasecmp(argn[i], "testnpruntime") == 0) + testNPRuntime(instance); + else if (strcasecmp(argn[i], "logSrc") == 0) { + for (int i = 0; i < argc; i++) + if (strcasecmp(argn[i], "src") == 0) + pluginLog(instance, "src: %s", argv[i]); + } } instance->pdata = obj; @@ -90,7 +99,7 @@ webkit_test_plugin_destroy_instance(NPP instance, NPSavedData **save) free(obj->onURLNotify); if (obj->logDestroy) - printf("PLUGIN: NPP_Destroy\n"); + pluginLog(instance, "NPP_Destroy"); browser->releaseobject(&obj->header); } @@ -105,7 +114,7 @@ webkit_test_plugin_set_window(NPP instance, NPWindow *window) if (obj) { if (obj->logSetWindow) { - printf("PLUGIN: NPP_SetWindow: %d %d\n", (int)window->width, (int)window->height); + pluginLog(instance, "NPP_SetWindow: %d %d", (int)window->width, (int)window->height); obj->logSetWindow = false; } } @@ -195,7 +204,7 @@ webkit_test_plugin_handle_event(NPP instance, void* event) return 0; XEvent* evt = static_cast<XEvent*>(event); - fprintf(stderr, "PLUGIN: event %d\n", evt->type); + pluginLog(instance, "event %d", evt->type); return 0; } @@ -218,10 +227,10 @@ webkit_test_plugin_get_value(NPP instance, NPPVariable variable, void *value) switch (variable) { case NPPVpluginNameString: - *((char **)value) = "WebKit Test PlugIn"; + *((char **)value) = const_cast<char*>("WebKit Test PlugIn"); break; case NPPVpluginDescriptionString: - *((char **)value) = "Simple Netscape plug-in that handles test content for WebKit"; + *((char **)value) = const_cast<char*>("Simple Netscape plug-in that handles test content for WebKit"); break; case NPPVpluginNeedsXEmbed: *((NPBool *)value) = TRUE; @@ -257,7 +266,7 @@ webkit_test_plugin_set_value(NPP instance, NPNVariable variable, void *value) char * NP_GetMIMEDescription(void) { - return "application/x-webkit-test-netscape:testnetscape:test netscape content"; + return const_cast<char*>("application/x-webkit-test-netscape:testnetscape:test netscape content"); } NPError @@ -269,8 +278,6 @@ NP_Initialize (NPNetscapeFuncs *aMozillaVTable, NPPluginFuncs *aPluginVTable) if ((aMozillaVTable->version >> 8) > NP_VERSION_MAJOR) return NPERR_INCOMPATIBLE_VERSION_ERROR; - if (aMozillaVTable->size < sizeof (NPNetscapeFuncs)) - return NPERR_INVALID_FUNCTABLE_ERROR; if (aPluginVTable->size < sizeof (NPPluginFuncs)) return NPERR_INVALID_FUNCTABLE_ERROR; diff --git a/WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp b/WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp index 2e81ca8..e0e0ffb 100644 --- a/WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp +++ b/WebKitTools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp @@ -36,9 +36,9 @@ gchar* JSStringCopyUTF8CString(JSStringRef jsString) return utf8; } -void LoadItem::invoke() const +bool LoadItem::invoke() const { - gchar* targetString = JSStringCopyUTF8CString(target()); + gchar* targetString = JSStringCopyUTF8CString(m_target.get()); WebKitWebFrame* targetFrame; if (!strlen(targetString)) @@ -47,27 +47,31 @@ void LoadItem::invoke() const targetFrame = webkit_web_frame_find_frame(mainFrame, targetString); g_free(targetString); - gchar* urlString = JSStringCopyUTF8CString(url()); + 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; } -void ReloadItem::invoke() const +bool ReloadItem::invoke() const { webkit_web_frame_reload(mainFrame); + return true; } -void ScriptItem::invoke() const +bool ScriptItem::invoke() const { WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); - gchar* scriptString = JSStringCopyUTF8CString(script()); + gchar* scriptString = JSStringCopyUTF8CString(m_script.get()); webkit_web_view_execute_script(webView, scriptString); g_free(scriptString); + return true; } -void BackForwardItem::invoke() const +bool BackForwardItem::invoke() const { WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); if (m_howFar == 1) @@ -79,4 +83,5 @@ void BackForwardItem::invoke() const 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/WebKitTools/DumpRenderTree/mac/AccessibilityControllerMac.mm b/WebKitTools/DumpRenderTree/mac/AccessibilityControllerMac.mm index 482c4f3..a191495 100644 --- a/WebKitTools/DumpRenderTree/mac/AccessibilityControllerMac.mm +++ b/WebKitTools/DumpRenderTree/mac/AccessibilityControllerMac.mm @@ -23,6 +23,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTree.h" #import "AccessibilityController.h" diff --git a/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm b/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm index 2c4546d..b2cbb34 100644 --- a/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm +++ b/WebKitTools/DumpRenderTree/mac/AccessibilityUIElementMac.mm @@ -23,6 +23,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTree.h" #import "AccessibilityUIElement.h" @@ -35,6 +36,10 @@ #import <wtf/RetainPtr.h> #import <wtf/Vector.h> +#ifdef BUILDING_ON_TIGER +#define NSAccessibilityValueDescriptionAttribute @"AXValueDescription" +#endif + @interface NSObject (WebKitAccessibilityArrayCategory) - (NSArray *)accessibilityArrayAttributeValues:(NSString *)attribute index:(NSUInteger)index maxCount:(NSUInteger)maxCount; @end @@ -111,8 +116,8 @@ static NSString* descriptionOfValue(id valueObject, id focusedAccessibilityObjec // Strip pointer locations if ([description rangeOfString:@"0x"].length) { - NSString* role = [focusedAccessibilityObject accessibilityAttributeValue:@"AXRole"]; - NSString* title = [focusedAccessibilityObject accessibilityAttributeValue:@"AXTitle"]; + NSString* role = [focusedAccessibilityObject accessibilityAttributeValue:NSAccessibilityRoleAttribute]; + NSString* title = [focusedAccessibilityObject accessibilityAttributeValue:NSAccessibilityTitleAttribute]; if ([title length]) return [NSString stringWithFormat:@"<%@: '%@'>", role, title]; return [NSString stringWithFormat:@"<%@>", role]; @@ -203,6 +208,23 @@ void AccessibilityUIElement::getChildrenWithRange(Vector<AccessibilityUIElement> convertNSArrayToVector(children, elementVector); } +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); +} + AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index) { Vector<AccessibilityUIElement> children; @@ -285,37 +307,67 @@ JSStringRef AccessibilityUIElement::parameterizedAttributeNames() JSStringRef AccessibilityUIElement::role() { - NSString* role = descriptionOfValue([m_element accessibilityAttributeValue:@"AXRole"], m_element); + NSString* role = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityRoleAttribute], m_element); return concatenateAttributeAndValue(@"AXRole", role); } JSStringRef AccessibilityUIElement::title() { - NSString* title = descriptionOfValue([m_element accessibilityAttributeValue:@"AXTitle"], m_element); + NSString* title = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityTitleAttribute], m_element); return concatenateAttributeAndValue(@"AXTitle", title); } JSStringRef AccessibilityUIElement::description() { - id description = descriptionOfValue([m_element accessibilityAttributeValue:@"AXDescription"], m_element); + id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityDescriptionAttribute], m_element); return concatenateAttributeAndValue(@"AXDescription", description); } +JSStringRef AccessibilityUIElement::language() +{ + id description = descriptionOfValue([m_element accessibilityAttributeValue:@"AXLanguage"], m_element); + return concatenateAttributeAndValue(@"AXLanguage", description); +} + +double AccessibilityUIElement::x() +{ + NSValue* positionValue = [m_element accessibilityAttributeValue:NSAccessibilityPositionAttribute]; + return static_cast<double>([positionValue pointValue].x); +} + +double AccessibilityUIElement::y() +{ + NSValue* positionValue = [m_element accessibilityAttributeValue:NSAccessibilityPositionAttribute]; + return static_cast<double>([positionValue pointValue].y); +} + double AccessibilityUIElement::width() { - NSValue* sizeValue = [m_element accessibilityAttributeValue:@"AXSize"]; + NSValue* sizeValue = [m_element accessibilityAttributeValue:NSAccessibilitySizeAttribute]; return static_cast<double>([sizeValue sizeValue].width); } double AccessibilityUIElement::height() { - NSValue* sizeValue = [m_element accessibilityAttributeValue:@"AXSize"]; + NSValue* sizeValue = [m_element accessibilityAttributeValue:NSAccessibilitySizeAttribute]; return static_cast<double>([sizeValue sizeValue].height); } +double AccessibilityUIElement::clickPointX() +{ + NSValue* positionValue = [m_element accessibilityAttributeValue:@"AXClickPoint"]; + return static_cast<double>([positionValue pointValue].x); +} + +double AccessibilityUIElement::clickPointY() +{ + NSValue* positionValue = [m_element accessibilityAttributeValue:@"AXClickPoint"]; + return static_cast<double>([positionValue pointValue].x); +} + double AccessibilityUIElement::intValue() { - id value = [m_element accessibilityAttributeValue:@"AXValue"]; + id value = [m_element accessibilityAttributeValue:NSAccessibilityValueAttribute]; if ([value isKindOfClass:[NSNumber class]]) return [(NSNumber*)value doubleValue]; return 0.0f; @@ -323,7 +375,7 @@ double AccessibilityUIElement::intValue() double AccessibilityUIElement::minValue() { - id value = [m_element accessibilityAttributeValue:@"AXMinValue"]; + id value = [m_element accessibilityAttributeValue:NSAccessibilityMinValueAttribute]; if ([value isKindOfClass:[NSNumber class]]) return [(NSNumber*)value doubleValue]; return 0.0f; @@ -331,30 +383,54 @@ double AccessibilityUIElement::minValue() double AccessibilityUIElement::maxValue() { - id value = [m_element accessibilityAttributeValue:@"AXMaxValue"]; + id value = [m_element accessibilityAttributeValue:NSAccessibilityMaxValueAttribute]; if ([value isKindOfClass:[NSNumber class]]) return [(NSNumber*)value doubleValue]; return 0.0; } +JSStringRef AccessibilityUIElement::valueDescription() +{ + NSString* valueDescription = [m_element accessibilityAttributeValue:NSAccessibilityValueDescriptionAttribute]; + if ([valueDescription isKindOfClass:[NSString class]]) + return [valueDescription createJSStringRef]; + return 0; +} + int AccessibilityUIElement::insertionPointLineNumber() { - id value = [m_element accessibilityAttributeValue:@"AXInsertionPointLineNumber"]; + id value = [m_element accessibilityAttributeValue:NSAccessibilityInsertionPointLineNumberAttribute]; if ([value isKindOfClass:[NSNumber class]]) return [(NSNumber *)value intValue]; return -1; } -bool AccessibilityUIElement::supportsPressAction() +bool AccessibilityUIElement::isActionSupported(JSStringRef action) { NSArray* actions = [m_element accessibilityActionNames]; - return [actions containsObject:@"AXPress"]; + return [actions containsObject:[NSString stringWithJSStringRef:action]]; +} + +bool AccessibilityUIElement::isEnabled() +{ + id value = [m_element accessibilityAttributeValue:NSAccessibilityEnabledAttribute]; + if ([value isKindOfClass:[NSNumber class]]) + return [value boolValue]; + return false; +} + +bool AccessibilityUIElement::isRequired() const +{ + id value = [m_element accessibilityAttributeValue:@"AXRequired"]; + if ([value isKindOfClass:[NSNumber class]]) + return [value boolValue]; + return false; } // parameterized attributes int AccessibilityUIElement::lineForIndex(int index) { - id value = [m_element accessibilityAttributeValue:@"AXLineForIndex" forParameter:[NSNumber numberWithInt:index]]; + id value = [m_element accessibilityAttributeValue:NSAccessibilityLineForIndexParameterizedAttribute forParameter:[NSNumber numberWithInt:index]]; if ([value isKindOfClass:[NSNumber class]]) return [(NSNumber *)value intValue]; return -1; @@ -469,3 +545,13 @@ void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned le NSValue *textRangeValue = [NSValue valueWithRange:textRange]; [m_element accessibilitySetValue:textRangeValue forAttribute:NSAccessibilitySelectedTextRangeAttribute]; } + +void AccessibilityUIElement::increment() +{ + [m_element accessibilityPerformAction:NSAccessibilityIncrementAction]; +} + +void AccessibilityUIElement::decrement() +{ + [m_element accessibilityPerformAction:NSAccessibilityDecrementAction]; +} diff --git a/WebKitTools/DumpRenderTree/mac/AppleScriptController.m b/WebKitTools/DumpRenderTree/mac/AppleScriptController.m index 86d2881..2eab827 100644 --- a/WebKitTools/DumpRenderTree/mac/AppleScriptController.m +++ b/WebKitTools/DumpRenderTree/mac/AppleScriptController.m @@ -27,6 +27,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "AppleScriptController.h" #import <WebKit/WebView.h> diff --git a/WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp b/WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp index 467f1bb..85d0613 100644 --- a/WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp +++ b/WebKitTools/DumpRenderTree/mac/CheckedMalloc.cpp @@ -27,7 +27,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. */ - + +#import "config.h" #import "CheckedMalloc.h" #import <malloc/malloc.h> diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig index fce81d3..79d1e14 100644 --- a/WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig +++ b/WebKitTools/DumpRenderTree/mac/Configurations/Base.xcconfig @@ -1,10 +1,33 @@ +// 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. + HEADER_SEARCH_PATHS = ForwardingHeaders mac/InternalHeaders; FRAMEWORK_SEARCH_PATHS = $(FRAMEWORK_SEARCH_PATHS_$(MAC_OS_X_VERSION_MAJOR)); FRAMEWORK_SEARCH_PATHS_ = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks FRAMEWORK_SEARCH_PATHS_1040 = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks FRAMEWORK_SEARCH_PATHS_1050 = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks FRAMEWORK_SEARCH_PATHS_1060 = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks -GCC_PREPROCESSOR_DEFINITIONS = ENABLE_DASHBOARD_SUPPORT; +GCC_PREPROCESSOR_DEFINITIONS = ENABLE_DASHBOARD_SUPPORT WEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST; DEBUG_INFORMATION_FORMAT = dwarf PREBINDING = NO GCC_C_LANGUAGE_STANDARD = gnu99 diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig index eab511f..05af1e5 100644 --- a/WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig +++ b/WebKitTools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig @@ -1,3 +1,26 @@ +// 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_$(MAC_OS_X_VERSION_MAJOR)); diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig index b977225..35a0720 100644 --- a/WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig +++ b/WebKitTools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig @@ -1,3 +1,26 @@ +// 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 = -sectcreate __DATA Ahem qt/fonts/AHEM____.TTF -sectcreate __DATA WeightWatcher100 fonts/WebKitWeightWatcher100.ttf -sectcreate __DATA WeightWatcher200 fonts/WebKitWeightWatcher200.ttf -sectcreate __DATA WeightWatcher300 fonts/WebKitWeightWatcher300.ttf -sectcreate __DATA WeightWatcher400 fonts/WebKitWeightWatcher400.ttf -sectcreate __DATA WeightWatcher500 fonts/WebKitWeightWatcher500.ttf -sectcreate __DATA WeightWatcher600 fonts/WebKitWeightWatcher600.ttf -sectcreate __DATA WeightWatcher700 fonts/WebKitWeightWatcher700.ttf -sectcreate __DATA WeightWatcher800 fonts/WebKitWeightWatcher800.ttf -sectcreate __DATA WeightWatcher900 fonts/WebKitWeightWatcher900.ttf PRODUCT_NAME = DumpRenderTree GCC_ENABLE_OBJC_EXCEPTIONS = YES diff --git a/WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig index fcd64c5..35968af 100644 --- a/WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig +++ b/WebKitTools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig @@ -1 +1,24 @@ +// 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/WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig b/WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig index ea17629..22ea4c2 100644 --- a/WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig +++ b/WebKitTools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig @@ -1,3 +1,26 @@ +// 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 diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm b/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm index 485dece..d49248b 100644 --- a/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm +++ b/WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm @@ -26,11 +26,13 @@ * (INCLUDING 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 "DumpRenderTreeDraggingInfo.h" #import "DumpRenderTreePasteboard.h" #import "DumpRenderTreeWindow.h" #import "EditingDelegate.h" @@ -49,7 +51,7 @@ #import "WorkQueueItem.h" #import <Carbon/Carbon.h> #import <CoreFoundation/CoreFoundation.h> -#import <WebKit/DOMElementPrivate.h> +#import <WebKit/DOMElement.h> #import <WebKit/DOMExtensions.h> #import <WebKit/DOMRange.h> #import <WebKit/WebBackForwardList.h> @@ -64,9 +66,11 @@ #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/WebTypesInternal.h> #import <WebKit/WebViewPrivate.h> @@ -254,7 +258,7 @@ static void activateFonts() 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]; + [fontURLs addObject:[fontURL absoluteURL]]; } CFArrayRef errors = 0; @@ -287,6 +291,11 @@ WebView *createWebViewAndOffscreenWindow() // Put it at -10000, -10000 in "flipped coordinates", since WebCore and the DOM use flipped coordinates. NSRect windowRect = NSOffsetRect(rect, -10000, [[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000); DumpRenderTreeWindow *window = [[DumpRenderTreeWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]; + +#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) + [window setColorSpace:[[NSScreen mainScreen] colorSpace]]; +#endif + [[window contentView] addSubview:webView]; [window orderBack:nil]; [window setAutodisplay:NO]; @@ -340,6 +349,11 @@ void testStringByEvaluatingJavaScriptFromString() [pool release]; } +static NSString *libraryPathForDumpRenderTree() +{ + return [@"~/Library/Application Support/DumpRenderTree" stringByExpandingTildeInPath]; +} + static void setDefaultsToConsistentValuesForTesting() { // Give some clear to undocumented defaults values @@ -353,6 +367,7 @@ static void setDefaultsToConsistentValuesForTesting() [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]; // Scrollbars are drawn either using AppKit (which uses NSUserDefaults) or using HIToolbox (which uses CFPreferences / kCFPreferencesAnyApplication / kCFPreferencesCurrentUser / kCFPreferencesAnyHost) [defaults setObject:@"DoubleMax" forKey:@"AppleScrollBarVariant"]; @@ -366,9 +381,16 @@ static void setDefaultsToConsistentValuesForTesting() if (initialValue) CFPreferencesSetValue(CFSTR("AppleScrollBarVariant"), initialValue.get(), kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost); - NSString *libraryPath = [@"~/Library/Application Support/DumpRenderTree" stringByExpandingTildeInPath]; - [defaults setObject:[libraryPath stringByAppendingPathComponent:@"Databases"] forKey:WebDatabaseDirectoryDefaultsKey]; - + NSString *path = libraryPathForDumpRenderTree(); + [defaults setObject:[path stringByAppendingPathComponent:@"Databases"] forKey:WebDatabaseDirectoryDefaultsKey]; + [defaults setObject:[path stringByAppendingPathComponent:@"LocalCache"] forKey:WebKitLocalCacheDefaultsKey]; + NSURLCache *sharedCache = + [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024 + diskCapacity:0 + diskPath:[path stringByAppendingPathComponent:@"URLCache"]]; + [NSURLCache setSharedURLCache:sharedCache]; + [sharedCache release]; + WebPreferences *preferences = [WebPreferences standardPreferences]; [preferences setStandardFontFamily:@"Times"]; @@ -385,8 +407,9 @@ static void setDefaultsToConsistentValuesForTesting() [preferences setEditableLinkBehavior:WebKitEditableLinkOnlyLiveWithShiftKey]; [preferences setTabsToLinks:NO]; [preferences setDOMPasteAllowed:YES]; - [preferences setFullDocumentTeardownEnabled:YES]; [preferences setShouldPrintBackgrounds:YES]; + [preferences setCacheModel:WebCacheModelDocumentBrowser]; + [preferences setXSSAuditorEnabled: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. @@ -599,7 +622,14 @@ static void dumpHistoryItem(WebHistoryItem *item, int indent, BOOL current) } for (int i = start; i < indent; i++) putchar(' '); - printf("%s", [[item URLString] UTF8String]); + + 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]); @@ -669,7 +699,7 @@ static NSData *dumpFrameAsPDF(WebFrame *frame) // likewise +[NSView dataWithPDFInsideRect:] also prints to a single continuous page // The goal of this function is to test "real" printing across multiple pages. // FIXME: It's possible there might be printing SPI to let us print a multi-page PDF to an NSData object - NSString *path = @"/tmp/test.pdf"; + NSString *path = [libraryPathForDumpRenderTree() stringByAppendingPathComponent:@"test.pdf"]; NSMutableDictionary *printInfoDict = [NSMutableDictionary dictionaryWithDictionary:[[NSPrintInfo sharedPrintInfo] dictionary]]; [printInfoDict setObject:NSPrintSaveJob forKey:NSPrintJobDisposition]; @@ -1016,6 +1046,8 @@ static void resetWebViewToConsistentStateBeforeTesting() [webView resetPageZoom:nil]; [webView setTabKeyCyclesThroughElements:YES]; [webView setPolicyDelegate:nil]; + [policyDelegate setPermissive:NO]; + [policyDelegate setControllerToNotifyDone:0]; [webView _setDashboardBehavior:WebDashboardBehaviorUseBackwardCompatibilityMode to:NO]; [webView _clearMainFrameName]; [[webView undoManager] removeAllActions]; @@ -1025,8 +1057,9 @@ static void resetWebViewToConsistentStateBeforeTesting() [preferences setAuthorAndUserStylesEnabled:YES]; [preferences setJavaScriptCanOpenWindowsAutomatically:YES]; [preferences setOfflineWebApplicationCacheEnabled:YES]; - [preferences setFullDocumentTeardownEnabled:YES]; [preferences setDeveloperExtrasEnabled:NO]; + [preferences setXSSAuditorEnabled:NO]; + [preferences setLoadsImagesAutomatically:YES]; if (persistentUserStyleSheetLocation) { [preferences setUserStyleSheetLocation:[NSURL URLWithString:(NSString *)(persistentUserStyleSheetLocation.get())]]; @@ -1076,6 +1109,8 @@ static void runTest(const string& testPathOrURL) gLayoutTestController = new LayoutTestController(testURL, expectedPixelHash); topLoadingFrame = nil; + ASSERT(!draggingInfo); // the previous test should have called eventSender.mouseUp to drop! + releaseAndZero(&draggingInfo); done = NO; gLayoutTestController->setIconDatabaseEnabled(false); @@ -1131,7 +1166,9 @@ static void runTest(const string& testPathOrURL) [window close]; } } - + + resetWebViewToConsistentStateBeforeTesting(); + [mainFrame loadHTMLString:@"<html></html>" baseURL:[NSURL URLWithString:@"about:blank"]]; [mainFrame stopLoading]; diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm index 41aa639..02280a1 100644 --- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm +++ b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm @@ -26,6 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTreeDraggingInfo.h" #import "DumpRenderTree.h" diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m b/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m index a797b5c..75be9de 100644 --- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m +++ b/WebKitTools/DumpRenderTree/mac/DumpRenderTreePasteboard.m @@ -28,6 +28,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTreeMac.h" #import "DumpRenderTreePasteboard.h" diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h index d2fb60d..b6bdcb8 100644 --- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h +++ b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.h @@ -33,6 +33,10 @@ @class WebView; @interface DumpRenderTreeWindow : NSWindow +{ + BOOL observingWebView; +} + // I'm not sure why we can't just use [NSApp windows] + (NSArray *)openWindows; diff --git a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm index 3b1fc1f..aa5b117 100644 --- a/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm +++ b/WebKitTools/DumpRenderTree/mac/DumpRenderTreeWindow.mm @@ -28,6 +28,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTreeWindow.h" #import "DumpRenderTree.h" @@ -70,9 +71,9 @@ static CFArrayCallBacks NonRetainingArrayCallbacks = { CFRange arrayRange = CFRangeMake(0, CFArrayGetCount(openWindowsRef)); CFIndex i = CFArrayGetFirstIndexOfValue(openWindowsRef, arrayRange, self); - assert(i != -1); - CFArrayRemoveValueAtIndex(openWindowsRef, i); - + if (i != kCFNotFound) + CFArrayRemoveValueAtIndex(openWindowsRef, i); + [super close]; } @@ -100,12 +101,17 @@ static CFArrayCallBacks NonRetainingArrayCallbacks = { - (void)startObservingWebView { + [self stopObservingWebView]; [[self webView] addObserver:self forKeyPath:@"_isUsingAcceleratedCompositing" options:0 context:0]; + observingWebView = YES; } - (void)stopObservingWebView { + if (!observingWebView) + return; [[self webView] removeObserver:self forKeyPath:@"_isUsingAcceleratedCompositing"]; + observingWebView = NO; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context diff --git a/WebKitTools/DumpRenderTree/mac/EditingDelegate.mm b/WebKitTools/DumpRenderTree/mac/EditingDelegate.mm index cf4026b..02e931c 100644 --- a/WebKitTools/DumpRenderTree/mac/EditingDelegate.mm +++ b/WebKitTools/DumpRenderTree/mac/EditingDelegate.mm @@ -26,6 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "EditingDelegate.h" #import "DumpRenderTree.h" diff --git a/WebKitTools/DumpRenderTree/mac/EventSendingController.mm b/WebKitTools/DumpRenderTree/mac/EventSendingController.mm index 5883026..8c7c1c4 100644 --- a/WebKitTools/DumpRenderTree/mac/EventSendingController.mm +++ b/WebKitTools/DumpRenderTree/mac/EventSendingController.mm @@ -29,10 +29,12 @@ * 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> @@ -118,16 +120,17 @@ BOOL replayingSavedEvents; + (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { - if (aSelector == @selector(mouseDown:) - || aSelector == @selector(mouseUp:) + if (aSelector == @selector(beginDragWithFiles:) + || aSelector == @selector(clearKillRing) || aSelector == @selector(contextClick) - || aSelector == @selector(scheduleAsynchronousClick) - || aSelector == @selector(mouseMoveToX:Y:) - || aSelector == @selector(leapForward:) - || aSelector == @selector(keyDown:withModifiers:) || aSelector == @selector(enableDOMUIEventLogging:) || aSelector == @selector(fireKeyboardEventsToElement:) - || aSelector == @selector(clearKillRing) + || aSelector == @selector(keyDown:withModifiers:) + || aSelector == @selector(leapForward:) + || aSelector == @selector(mouseDown:) + || aSelector == @selector(mouseMoveToX:Y:) + || aSelector == @selector(mouseUp:) + || aSelector == @selector(scheduleAsynchronousClick) || aSelector == @selector(textZoomIn) || aSelector == @selector(textZoomOut) || aSelector == @selector(zoomPageIn) @@ -145,20 +148,22 @@ BOOL replayingSavedEvents; + (NSString *)webScriptNameForSelector:(SEL)aSelector { + if (aSelector == @selector(beginDragWithFiles:)) + return @"beginDragWithFiles"; + if (aSelector == @selector(enableDOMUIEventLogging:)) + return @"enableDOMUIEventLogging"; + if (aSelector == @selector(fireKeyboardEventsToElement:)) + return @"fireKeyboardEventsToElement"; + if (aSelector == @selector(keyDown:withModifiers:)) + return @"keyDown"; + if (aSelector == @selector(leapForward:)) + return @"leapForward"; if (aSelector == @selector(mouseDown:)) return @"mouseDown"; if (aSelector == @selector(mouseUp:)) return @"mouseUp"; if (aSelector == @selector(mouseMoveToX:Y:)) return @"mouseMoveTo"; - if (aSelector == @selector(leapForward:)) - return @"leapForward"; - if (aSelector == @selector(keyDown:withModifiers:)) - return @"keyDown"; - if (aSelector == @selector(enableDOMUIEventLogging:)) - return @"enableDOMUIEventLogging"; - if (aSelector == @selector(fireKeyboardEventsToElement:)) - return @"fireKeyboardEventsToElement"; if (aSelector == @selector(setDragMode:)) return @"setDragMode"; return nil; @@ -238,6 +243,37 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti 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) || @@ -339,7 +375,9 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti [webView performDragOperation:draggingInfo]; else [webView draggingExited:draggingInfo]; - [[draggingInfo draggingSource] draggedImage:[draggingInfo draggedImage] endedAt:lastMousePosition operation:dragOperation]; + // 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; } @@ -355,7 +393,6 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti [invocation setArgument:&y atIndex:3]; [EventSendingController saveEvent:invocation]; - return; } @@ -376,7 +413,9 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti if (leftMouseButtonDown) { [subView mouseDragged:event]; if (draggingInfo) { - [[draggingInfo draggingSource] draggedImage:[draggingInfo draggedImage] movedTo:lastMousePosition]; + // 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 @@ -476,7 +515,7 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti charactersIgnoringModifiers = [character lowercaseString]; } - if ([modifiers isKindOfClass:[WebScriptObject class]]) + if ([modifiers isKindOfClass:[WebScriptObject class]]) { for (unsigned i = 0; [[modifiers webScriptValueAtIndex:i] isKindOfClass:[NSString class]]; i++) { NSString *modifier = (NSString *)[modifiers webScriptValueAtIndex:i]; if ([modifier isEqual:@"ctrlKey"]) @@ -488,6 +527,7 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti else if ([modifier isEqual:@"metaKey"]) modifierFlags |= NSCommandKeyMask; } + } [[[mainFrame frameView] documentView] layout]; @@ -617,9 +657,8 @@ static NSEventType eventTypeForMouseButtonAndAction(int button, MouseAction acti // to work well enough that we can test that way instead. - (void)fireKeyboardEventsToElement:(WebScriptObject *)element { - if (![element isKindOfClass:[DOMHTMLElement class]]) { + if (![element isKindOfClass:[DOMHTMLElement class]]) return; - } DOMHTMLElement *target = (DOMHTMLElement*)element; DOMDocument *document = [target ownerDocument]; diff --git a/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm b/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm index f079cb5..4bf02ed 100644 --- a/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm +++ b/WebKitTools/DumpRenderTree/mac/FrameLoadDelegate.mm @@ -26,6 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTree.h" #import "FrameLoadDelegate.h" @@ -38,6 +39,7 @@ #import "ObjCController.h" #import "ObjCPlugin.h" #import "ObjCPluginFunction.h" +#import "PlainTextController.h" #import "TextInputController.h" #import "WorkQueue.h" #import "WorkQueueItem.h" @@ -105,22 +107,19 @@ - (void)dealloc { 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 { - // quit doing work once a load is in progress - while (WorkQueue::shared()->count() > 0 && !topLoadingFrame) { - WorkQueueItem* item = WorkQueue::shared()->dequeue(); - ASSERT(item); - item->invoke(); - delete item; - } + // if another load started, then wait for it to complete. + if (topLoadingFrame) + return; - // if we didn't start a new load, then we finished all the commands, so we're ready to dump state - if (!topLoadingFrame && !gLayoutTestController->waitToDump()) + // if we finish all the commands, we're ready to dump state + if (WorkQueue::shared()->processWork() && !gLayoutTestController->waitToDump()) dump(); } @@ -171,8 +170,6 @@ gLayoutTestController->setWindowIsKey(true); NSView *documentView = [[mainFrame frameView] documentView]; [[[mainFrame webView] window] makeFirstResponder:documentView]; - if ([documentView isKindOfClass:[WebHTMLView class]]) - [(WebHTMLView *)documentView _updateFocusedAndActiveState]; } - (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame @@ -182,7 +179,7 @@ printf ("%s\n", [string UTF8String]); } - if ([error domain] == NSURLErrorDomain && [error code] == NSURLErrorServerCertificateHasUnknownRoot) { + if ([error domain] == NSURLErrorDomain && ([error code] == NSURLErrorServerCertificateHasUnknownRoot || [error code] == NSURLErrorServerCertificateUntrusted)) { NSURL *failedURL = [[error userInfo] objectForKey:@"NSErrorFailingURLKey"]; [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[failedURL _web_hostString]]; [frame loadRequest:[[[[frame provisionalDataSource] request] mutableCopy] autorelease]]; @@ -256,24 +253,21 @@ ASSERT(!exception); // Make Old-Style controllers + + AppleScriptController *asc = [[AppleScriptController alloc] initWithWebView:sender]; + [obj setValue:asc forKey:@"appleScriptController"]; + [asc release]; + EventSendingController *esc = [[EventSendingController alloc] init]; [obj setValue:esc forKey:@"eventSender"]; [esc release]; - TextInputController *tic = [[TextInputController alloc] initWithWebView:sender]; - [obj setValue:tic forKey:@"textInputController"]; - [tic release]; + [obj setValue:gNavigationController forKey:@"navigationController"]; - AppleScriptController *asc = [[AppleScriptController alloc] initWithWebView:sender]; - [obj setValue:asc forKey:@"appleScriptController"]; - [asc release]; - ObjCController *occ = [[ObjCController alloc] init]; [obj setValue:occ forKey:@"objCController"]; [occ release]; - [obj setValue:gNavigationController forKey:@"navigationController"]; - ObjCPlugin *plugin = [[ObjCPlugin alloc] init]; [obj setValue:plugin forKey:@"objCPlugin"]; [plugin release]; @@ -281,6 +275,12 @@ ObjCPluginFunction *pluginFunction = [[ObjCPluginFunction alloc] init]; [obj setValue:pluginFunction forKey:@"objCPluginFunction"]; [pluginFunction release]; + + [obj setValue:[PlainTextController sharedPlainTextController] forKey:@"plainText"]; + + TextInputController *tic = [[TextInputController alloc] initWithWebView:sender]; + [obj setValue:tic forKey:@"textInputController"]; + [tic release]; } - (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame diff --git a/WebKitTools/DumpRenderTree/mac/GCControllerMac.mm b/WebKitTools/DumpRenderTree/mac/GCControllerMac.mm index 4b845ba..de8a61e 100644 --- a/WebKitTools/DumpRenderTree/mac/GCControllerMac.mm +++ b/WebKitTools/DumpRenderTree/mac/GCControllerMac.mm @@ -27,7 +27,9 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "GCController.h" + #import <WebKit/WebCoreStatistics.h> diff --git a/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm b/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm index 3aa1f2c..591bb81 100644 --- a/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm +++ b/WebKitTools/DumpRenderTree/mac/LayoutTestControllerMac.mm @@ -26,6 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTree.h" #import "LayoutTestController.h" @@ -174,16 +175,6 @@ JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSSt return JSStringRetain(url); // Do nothing on mac. } -void LayoutTestController::queueBackNavigation(int howFarBack) -{ - WorkQueue::shared()->queue(new BackItem(howFarBack)); -} - -void LayoutTestController::queueForwardNavigation(int howFarForward) -{ - WorkQueue::shared()->queue(new ForwardItem(howFarForward)); -} - void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target) { RetainPtr<CFStringRef> urlCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, url)); @@ -196,16 +187,6 @@ void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target) WorkQueue::shared()->queue(new LoadItem(absoluteURL.get(), target)); } -void LayoutTestController::queueReload() -{ - WorkQueue::shared()->queue(new ReloadItem); -} - -void LayoutTestController::queueScript(JSStringRef script) -{ - WorkQueue::shared()->queue(new ScriptItem(script)); -} - void LayoutTestController::setAcceptsEditing(bool newAcceptsEditing) { [(EditingDelegate *)[[mainFrame webView] editingDelegate] setAcceptsEditing:newAcceptsEditing]; @@ -263,9 +244,6 @@ void LayoutTestController::setMainFrameIsFirstResponder(bool flag) NSResponder *firstResponder = flag ? documentView : nil; [[[mainFrame webView] window] makeFirstResponder:firstResponder]; - - if ([documentView isKindOfClass:[WebHTMLView class]]) - [(WebHTMLView *)documentView _updateFocusedAndActiveState]; } void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled) @@ -273,6 +251,11 @@ void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled [[[mainFrame webView] preferences] setPrivateBrowsingEnabled:privateBrowsingEnabled]; } +void LayoutTestController::setXSSAuditorEnabled(bool enabled) +{ + [[[mainFrame webView] preferences] setXSSAuditorEnabled:enabled]; +} + void LayoutTestController::setPopupBlockingEnabled(bool popupBlockingEnabled) { [[[mainFrame webView] preferences] setJavaScriptCanOpenWindowsAutomatically:!popupBlockingEnabled]; @@ -300,6 +283,16 @@ void LayoutTestController::setUserStyleSheetLocation(JSStringRef path) [[WebPreferences standardPreferences] setUserStyleSheetLocation:url]; } +void LayoutTestController::disableImageLoading() +{ + [[WebPreferences standardPreferences] setLoadsImagesAutomatically:NO]; +} + +void LayoutTestController::dispatchPendingLoadRequests() +{ + [[mainFrame webView] _dispatchPendingLoadRequests]; +} + void LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL) { RetainPtr<CFStringRef> urlString(AdoptCF, JSStringCopyCFString(0, jsURL)); @@ -314,9 +307,7 @@ void LayoutTestController::clearPersistentUserStyleSheet() void LayoutTestController::setWindowIsKey(bool windowIsKey) { m_windowIsKey = windowIsKey; - NSView *documentView = [[mainFrame frameView] documentView]; - if ([documentView isKindOfClass:[WebHTMLView class]]) - [(WebHTMLView *)documentView _updateFocusedAndActiveState]; + [[mainFrame webView] _updateActiveState]; } void LayoutTestController::setSmartInsertDeleteEnabled(bool flag) @@ -378,6 +369,11 @@ void LayoutTestController::execCommand(JSStringRef name, JSStringRef value) [[mainFrame webView] _executeCoreCommandByName:nameNS value:valueNS]; } +void LayoutTestController::setCacheModel(int cacheModel) +{ + [[WebPreferences standardPreferences] setCacheModel:cacheModel]; +} + bool LayoutTestController::isCommandEnabled(JSStringRef name) { RetainPtr<CFStringRef> nameCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, name)); @@ -426,3 +422,10 @@ unsigned LayoutTestController::numberOfActiveAnimations() const { return [mainFrame _numberOfActiveAnimations]; } + +void LayoutTestController::waitForPolicyDelegate() +{ + setWaitToDump(true); + [policyDelegate setControllerToNotifyDone:this]; + [[mainFrame webView] setPolicyDelegate:policyDelegate]; +} diff --git a/WebKitTools/DumpRenderTree/mac/NavigationController.m b/WebKitTools/DumpRenderTree/mac/NavigationController.m index 44aed8a..8c01d50 100644 --- a/WebKitTools/DumpRenderTree/mac/NavigationController.m +++ b/WebKitTools/DumpRenderTree/mac/NavigationController.m @@ -26,9 +26,12 @@ * 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> -#import "NavigationController.h" + @implementation NavigationController + (BOOL)isSelectorExcludedFromWebScript:(SEL)selector diff --git a/WebKitTools/DumpRenderTree/mac/ObjCController.m b/WebKitTools/DumpRenderTree/mac/ObjCController.m index ec1ed38..e0d663e 100644 --- a/WebKitTools/DumpRenderTree/mac/ObjCController.m +++ b/WebKitTools/DumpRenderTree/mac/ObjCController.m @@ -26,6 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "ObjCController.h" #import <JavaScriptCore/JavaScriptCore.h> diff --git a/WebKitTools/DumpRenderTree/mac/ObjCPlugin.m b/WebKitTools/DumpRenderTree/mac/ObjCPlugin.m index 3ec3e74..023eae1 100644 --- a/WebKitTools/DumpRenderTree/mac/ObjCPlugin.m +++ b/WebKitTools/DumpRenderTree/mac/ObjCPlugin.m @@ -24,10 +24,11 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "ObjCPlugin.h" -#import <objc/objc-runtime.h> -#import <WebKit/WebKit.h> +#import <WebKit/WebKit.h> +#import <objc/objc-runtime.h> // === NSObject category to expose almost everything to JavaScript === diff --git a/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m b/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m index 5cd16f8..5bf3617 100644 --- a/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m +++ b/WebKitTools/DumpRenderTree/mac/ObjCPluginFunction.m @@ -23,7 +23,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - +#import "config.h" #import "ObjCPluginFunction.h" diff --git a/WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c b/WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c new file mode 100644 index 0000000..35f051c --- /dev/null +++ b/WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c @@ -0,0 +1,42 @@ +/* + * 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/WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm b/WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm new file mode 100644 index 0000000..f0697fc --- /dev/null +++ b/WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm @@ -0,0 +1,52 @@ +# 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. + +use strict; +use warnings; + +package DumpRenderTreeSupport; + +BEGIN { + use Exporter (); + our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); + $VERSION = 1.00; + @ISA = qw(Exporter); + @EXPORT = qw(&processIsCrashing); + %EXPORT_TAGS = ( ); + @EXPORT_OK = (); +} + +our @EXPORT_OK; + +sub processIsCrashing +{ + my $pid = shift; + my $tryingToExit = 0; + open PS, "ps -o state -p $pid |"; + <PS>; # skip header + $tryingToExit = 1 if <PS> =~ /E/; + close PS; + return $tryingToExit; +} + +1; diff --git a/WebKitTools/DumpRenderTree/mac/PerlSupport/Makefile b/WebKitTools/DumpRenderTree/mac/PerlSupport/Makefile new file mode 100644 index 0000000..6c97877 --- /dev/null +++ b/WebKitTools/DumpRenderTree/mac/PerlSupport/Makefile @@ -0,0 +1,63 @@ +# 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=$(OUTPUT_DIR)/DerivedSources/DumpRenderTree/DumpRenderTreeSupport_wrap.c +PERL_MODULE=$(OUTPUT_DIR)/DumpRenderTreeSupport.pm +DYLIB=$(OUTPUT_DIR)/DumpRenderTreeSupport.dylib +DUMPRENDERTREE=$(OUTPUT_DIR)/DumpRenderTree + +OSX_VERSION=$(shell sw_vers -productVersion | cut -d. -f 2) + +ifneq "$(OSX_VERSION)" "4" + +PERL=/usr/bin/perl +SWIG=/usr/bin/swig + +all: $(DYLIB) $(PERL_MODULE) + +$(WRAPPER) $(PERL_MODULE): DumpRenderTreeSupport.c $(DUMPRENDERTREE) + mkdir -p $$(dirname $(WRAPPER)) + $(SWIG) -o $(WRAPPER) -outdir $(OUTPUT_DIR) -perl -module DumpRenderTreeSupport $< + +$(DYLIB): DumpRenderTreeSupport.c $(WRAPPER) + gcc -g -dynamiclib -o $(DYLIB) `$(PERL) -MExtUtils::Embed -eperl_inc` `$(PERL) -MExtUtils::Embed -eldopts` $^ + + +else + + +all: $(PERL_MODULE) + +$(PERL_MODULE): DumpRenderTreeSupportTiger.pm + cp $^ $(PERL_MODULE) + + +endif + +clean: + rm -f $(WRAPPER) $(PERL_MODULE) $(DYLIB) + +installhdrs installsrc install: diff --git a/WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm b/WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm index d17c111..0059b69 100644 --- a/WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm +++ b/WebKitTools/DumpRenderTree/mac/PixelDumpSupportMac.mm @@ -28,16 +28,13 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "DumpRenderTree.h" +#include "config.h" #include "PixelDumpSupport.h" #include "PixelDumpSupportCG.h" +#include "DumpRenderTree.h" #include "LayoutTestController.h" #include <CoreGraphics/CGBitmapContext.h> -#ifndef BUILDING_ON_LEOPARD -#include <OpenGL/OpenGL.h> -#include <OpenGL/CGLMacro.h> -#endif #include <wtf/Assertions.h> #include <wtf/RefPtr.h> @@ -46,6 +43,11 @@ #import <WebKit/WebKit.h> #import <WebKit/WebViewPrivate.h> +#if defined(BUILDING_ON_TIGER) +#include <OpenGL/OpenGL.h> +#include <OpenGL/CGLMacro.h> +#endif + // To ensure pixel tests consistency, we need to always render in the same colorspace. // Unfortunately, because of AppKit / WebKit constraints, we can't render directly in the colorspace of our choice. // This implies we have to temporarily change the profile of the main display to the colorspace we want to render into. @@ -153,11 +155,18 @@ PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool onscreen, bool inc [view displayRectIgnoringOpacity:line inContext:nsContext]; } } else { + if (onscreen) { -#ifdef BUILDING_ON_LEOPARD +#if !defined(BUILDING_ON_TIGER) + // 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); @@ -216,10 +225,11 @@ PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool onscreen, bool inc [window setLevel:oldLevel]; #endif } 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 displayIfNeeded]; [view lockFocus]; NSBitmapImageRep *imageRep = [[[NSBitmapImageRep alloc] initWithFocusedViewRect:[view frame]] autorelease]; [view unlockFocus]; diff --git a/WebKitTools/DumpRenderTree/mac/PlainTextController.h b/WebKitTools/DumpRenderTree/mac/PlainTextController.h new file mode 100644 index 0000000..1488f2f --- /dev/null +++ b/WebKitTools/DumpRenderTree/mac/PlainTextController.h @@ -0,0 +1,28 @@ +/* + * 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. + */ + +@interface PlainTextController : NSObject ++ (PlainTextController *)sharedPlainTextController; +@end diff --git a/WebKitTools/DumpRenderTree/mac/PlainTextController.mm b/WebKitTools/DumpRenderTree/mac/PlainTextController.mm new file mode 100644 index 0000000..eb89bce --- /dev/null +++ b/WebKitTools/DumpRenderTree/mac/PlainTextController.mm @@ -0,0 +1,60 @@ +/* + * 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 "PlainTextController.h" + +#import <WebKit/WebKit.h> + +@implementation PlainTextController + ++ (PlainTextController *)sharedPlainTextController +{ + static PlainTextController *controller = [[PlainTextController alloc] init]; + return controller; +} + ++ (BOOL)isSelectorExcludedFromWebScript:(SEL)selector +{ + if (selector == @selector(plainTextForRange:)) + return NO; + return YES; +} + ++ (NSString *)webScriptNameForSelector:(SEL)selector +{ + if (selector == @selector(plainTextForRange:)) + return @"plainText"; + return nil; +} + +- (NSString *)plainTextForRange:(DOMRange *)range +{ + if (![range isKindOfClass:[DOMRange class]]) + return nil; + return [range text]; +} + +@end diff --git a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.h b/WebKitTools/DumpRenderTree/mac/PolicyDelegate.h index 4cdf7c0..3b95455 100644 --- a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.h +++ b/WebKitTools/DumpRenderTree/mac/PolicyDelegate.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -28,11 +28,14 @@ #import <Cocoa/Cocoa.h> +class LayoutTestController; @interface PolicyDelegate : NSObject { BOOL permissiveDelegate; + LayoutTestController* controllerToNotifyDone; } - (void)setPermissive:(BOOL)permissive; +- (void)setControllerToNotifyDone:(LayoutTestController*)controller; @end diff --git a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm b/WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm index a0855d3..6935ea7 100644 --- a/WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm +++ b/WebKitTools/DumpRenderTree/mac/PolicyDelegate.mm @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -26,13 +26,25 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "PolicyDelegate.h" #import "DumpRenderTree.h" -#import "DumpRenderTreeDraggingInfo.h" +#import "LayoutTestController.h" +#import <WebKit/DOMElement.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 @@ -63,13 +75,29 @@ default: typeDescription = "illegal value"; } - - printf("Policy delegate: attempt to load %s with navigation type '%s'\n", [[[request URL] absoluteString] UTF8String], typeDescription); - + + 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 %d, in frame '%@'", [error domain], [error code], [frame name]]; + printf("%s\n", [message UTF8String]); } - (void)setPermissive:(BOOL)permissive @@ -77,5 +105,9 @@ permissiveDelegate = permissive; } +- (void)setControllerToNotifyDone:(LayoutTestController*)controller +{ + controllerToNotifyDone = controller; +} @end diff --git a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm b/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm index 2b7a8f3..0089f7f 100644 --- a/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm +++ b/WebKitTools/DumpRenderTree/mac/ResourceLoadDelegate.mm @@ -26,6 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "ResourceLoadDelegate.h" #import "DumpRenderTree.h" @@ -88,7 +89,10 @@ - (NSString *)_drt_descriptionSuitableForTestResult { - return [NSString stringWithFormat:@"<NSURLResponse %@>", [[self URL] _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 @@ -97,7 +101,10 @@ - (NSString *)_drt_descriptionSuitableForTestResult { - return [NSString stringWithFormat:@"<NSURLRequest URL %@, main document URL %@>", [[self URL] _drt_descriptionSuitableForTestResult], [[self mainDocumentURL] _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 @@ -122,6 +129,11 @@ printf("%s\n", [string UTF8String]); } + if (!done && gLayoutTestController->willSendRequestReturnsNullOnRedirect() && redirectResponse) { + printf("Returning null for this redirect\n"); + return nil; + } + NSURL *url = [newRequest URL]; NSString *host = [url host]; if (host @@ -153,6 +165,8 @@ NSString *string = [NSString stringWithFormat:@"%@ - didReceiveResponse %@", identifier, [response _drt_descriptionSuitableForTestResult]]; printf("%s\n", [string UTF8String]); } + if (!done && gLayoutTestController->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 @@ -184,7 +198,7 @@ -(NSCachedURLResponse *) webView: (WebView *)wv resource:(id)identifier willCacheResponse:(NSCachedURLResponse *)response fromDataSource:(WebDataSource *)dataSource { - if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) { + if (!done && gLayoutTestController->dumpWillCacheResponse()) { NSString *string = [NSString stringWithFormat:@"%@ - willCacheResponse: called", identifier]; printf("%s\n", [string UTF8String]); } diff --git a/WebKitTools/DumpRenderTree/mac/TextInputController.m b/WebKitTools/DumpRenderTree/mac/TextInputController.m index a635070..3ea9c22 100644 --- a/WebKitTools/DumpRenderTree/mac/TextInputController.m +++ b/WebKitTools/DumpRenderTree/mac/TextInputController.m @@ -26,9 +26,10 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#import "DumpRenderTreeMac.h" +#import "config.h" #import "TextInputController.h" +#import "DumpRenderTreeMac.h" #import <AppKit/NSInputManager.h> #import <WebKit/WebDocument.h> #import <WebKit/WebFrame.h> diff --git a/WebKitTools/DumpRenderTree/mac/UIDelegate.mm b/WebKitTools/DumpRenderTree/mac/UIDelegate.mm index 550892f..807ea08 100644 --- a/WebKitTools/DumpRenderTree/mac/UIDelegate.mm +++ b/WebKitTools/DumpRenderTree/mac/UIDelegate.mm @@ -26,16 +26,17 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#import "DumpRenderTree.h" +#import "config.h" #import "UIDelegate.h" +#import "DumpRenderTree.h" #import "DumpRenderTreeDraggingInfo.h" #import "EventSendingController.h" #import "LayoutTestController.h" #import <WebKit/WebFramePrivate.h> #import <WebKit/WebHTMLViewPrivate.h> -#import <WebKit/WebView.h> #import <WebKit/WebSecurityOriginPrivate.h> +#import <WebKit/WebView.h> #import <wtf/Assertions.h> DumpRenderTreeDraggingInfo *draggingInfo = nil; @@ -95,11 +96,8 @@ DumpRenderTreeDraggingInfo *draggingInfo = nil; - (void)webView:(WebView *)sender dragImage:(NSImage *)anImage at:(NSPoint)viewLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag forView:(NSView *)view { assert(!draggingInfo); - if (gLayoutTestController->addFileToPasteboardOnDrag()) { - [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil]; - [pboard setPropertyList:[NSArray arrayWithObject:@"DRTFakeFile"] forType:NSFilenamesPboardType]; - } draggingInfo = [[DumpRenderTreeDraggingInfo alloc] initWithImage:anImage offset:initialOffset pasteboard:pboard source:sourceObj]; + [sender draggingUpdated:draggingInfo]; [EventSendingController replaySavedEvents]; } diff --git a/WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm b/WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm index 3a7b0e2..4e39a5a 100644 --- a/WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm +++ b/WebKitTools/DumpRenderTree/mac/WorkQueueItemMac.mm @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -26,6 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#import "config.h" #import "DumpRenderTree.h" #import "WorkQueueItem.h" @@ -37,7 +38,7 @@ #import <WebKit/WebView.h> #import <wtf/RetainPtr.h> -void LoadItem::invoke() const +bool LoadItem::invoke() const { RetainPtr<CFStringRef> urlCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, m_url.get())); NSString *urlNS = (NSString *)urlCF.get(); @@ -50,21 +51,24 @@ void LoadItem::invoke() const else targetFrame = mainFrame; [targetFrame loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlNS]]]; + return true; } -void ReloadItem::invoke() const +bool ReloadItem::invoke() const { [[mainFrame webView] reload:nil]; + return true; } -void ScriptItem::invoke() const +bool ScriptItem::invoke() const { RetainPtr<CFStringRef> scriptCF(AdoptCF, JSStringCopyCFString(kCFAllocatorDefault, m_script.get())); NSString *scriptNS = (NSString *)scriptCF.get(); [[mainFrame webView] stringByEvaluatingJavaScriptFromString:scriptNS]; + return true; } -void BackForwardItem::invoke() const +bool BackForwardItem::invoke() const { if (m_howFar == 1) [[mainFrame webView] goForward]; @@ -74,4 +78,5 @@ void BackForwardItem::invoke() const WebBackForwardList *bfList = [[mainFrame webView] backForwardList]; [[mainFrame webView] goToBackForwardItem:[bfList itemAtIndex:m_howFar]]; } + return true; } diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp index 78d535a..1afb761 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp @@ -32,7 +32,10 @@ #include "DumpRenderTree.h" #include "jsobjects.h" #include "testplugin.h" +#include "WorkQueue.h" +#include <QBuffer> +#include <QCryptographicHash> #include <QDir> #include <QFile> #include <QTimer> @@ -41,11 +44,17 @@ #include <QApplication> #include <QUrl> #include <QFocusEvent> +#include <QFontDatabase> #include <qwebpage.h> #include <qwebframe.h> #include <qwebview.h> #include <qwebsettings.h> +#include <qwebsecurityorigin.h> + +#ifdef Q_WS_X11 +#include <fontconfig/fontconfig.h> +#endif #include <unistd.h> #include <qdebug.h> @@ -53,7 +62,8 @@ extern void qt_drt_run(bool b); extern void qt_dump_set_accepts_editing(bool b); extern void qt_dump_frame_loader(bool b); - +extern void qt_drt_clearFrameName(QWebFrame* qFrame); +extern void qt_drt_overwritePluginDirectories(); namespace WebCore { @@ -73,6 +83,9 @@ public: bool javaScriptConfirm(QWebFrame *frame, const QString& msg); bool javaScriptPrompt(QWebFrame *frame, const QString& msg, const QString& defaultValue, QString* result); +public slots: + bool shouldInterruptJavaScript() { return false; } + private slots: void setViewGeometry(const QRect &r) { @@ -89,9 +102,13 @@ WebPage::WebPage(QWidget *parent, DumpRenderTree *drt) { settings()->setFontSize(QWebSettings::MinimumFontSize, 5); settings()->setFontSize(QWebSettings::MinimumLogicalFontSize, 5); + // To get DRT compliant to some layout tests lets set the default fontsize to 13. + settings()->setFontSize(QWebSettings::DefaultFontSize, 13); + settings()->setFontSize(QWebSettings::DefaultFixedFontSize, 13); settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true); settings()->setAttribute(QWebSettings::LinksIncludedInFocusChain, false); + settings()->setAttribute(QWebSettings::PluginsEnabled, true); connect(this, SIGNAL(geometryChangeRequested(const QRect &)), this, SLOT(setViewGeometry(const QRect & ))); @@ -127,9 +144,12 @@ bool WebPage::javaScriptPrompt(QWebFrame*, const QString& msg, const QString& de } DumpRenderTree::DumpRenderTree() - : m_stdin(0) + : m_dumpPixels(false) + , m_stdin(0) , m_notifier(0) { + qt_drt_overwritePluginDirectories(); + m_controller = new LayoutTestController(this); connect(m_controller, SIGNAL(done()), this, SLOT(dump())); @@ -140,15 +160,18 @@ DumpRenderTree::DumpRenderTree() connect(m_page, SIGNAL(frameCreated(QWebFrame *)), this, SLOT(connectFrame(QWebFrame *))); connectFrame(m_page->mainFrame()); - connect(m_page, SIGNAL(loadFinished(bool)), m_controller, SLOT(maybeDump(bool))); + connect(m_page->mainFrame(), SIGNAL(loadFinished(bool)), m_controller, SLOT(maybeDump(bool))); m_page->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff); m_page->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff); connect(m_page->mainFrame(), SIGNAL(titleChanged(const QString&)), SLOT(titleChanged(const QString&))); + connect(m_page, SIGNAL(databaseQuotaExceeded(QWebFrame*,QString)), + this, SLOT(dumpDatabaseQuota(QWebFrame*,QString))); m_eventSender = new EventSender(m_page); m_textInputController = new TextInputController(m_page); + m_gcController = new GCController(m_page); QObject::connect(this, SIGNAL(quit()), qApp, SLOT(quit()), Qt::QueuedConnection); qt_drt_run(true); @@ -177,21 +200,57 @@ void DumpRenderTree::open() } } -void DumpRenderTree::open(const QUrl& url) +void DumpRenderTree::resetToConsistentStateBeforeTesting() { + closeRemainingWindows(); + + // Reset so that any current loads are stopped + m_page->blockSignals(true); + m_page->triggerAction(QWebPage::Stop); + m_page->blockSignals(false); + + m_page->mainFrame()->setZoomFactor(1.0); + qt_drt_clearFrameName(m_page->mainFrame()); + + WorkQueue::shared()->clear(); + // Causes timeout, why? + //WorkQueue::shared()->setFrozen(false); + + m_controller->reset(); +} + +void DumpRenderTree::open(const QUrl& aurl) +{ + resetToConsistentStateBeforeTesting(); + + QUrl url = aurl; + m_expectedHash = QString(); + if (m_dumpPixels) { + // single quote marks the pixel dump hash + QString str = url.toString(); + int i = str.indexOf('\''); + if (i > -1) { + m_expectedHash = str.mid(i + 1, str.length()); + str.remove(i, str.length()); + url = QUrl(str); + } + } + // W3C SVG tests expect to be 480x360 bool isW3CTest = url.toString().contains("svg/W3C-SVG-1.1"); int width = isW3CTest ? 480 : maxViewWidth; int height = isW3CTest ? 360 : maxViewHeight; m_page->view()->resize(QSize(width, height)); + m_page->setFixedContentsSize(QSize()); m_page->setViewportSize(QSize(width, height)); - // Reset so that any current loads are stopped - m_page->blockSignals(true); - m_page->triggerAction(QWebPage::Stop); - m_page->blockSignals(false); + QFocusEvent ev(QEvent::FocusIn); + m_page->event(&ev); - resetJSObjects(); + QFontDatabase::removeAllApplicationFonts(); +#if defined(Q_WS_X11) + initializeFonts(); +#endif qt_dump_frame_loader(url.toString().contains("loading/")); m_page->mainFrame()->load(url); @@ -217,9 +276,13 @@ void DumpRenderTree::readStdin(int /* socket */) fflush(stdout); } -void DumpRenderTree::resetJSObjects() +void DumpRenderTree::setDumpPixels(bool dump) +{ + m_dumpPixels = dump; +} + +void DumpRenderTree::closeRemainingWindows() { - m_controller->reset(); foreach(QWidget *widget, windows) delete widget; windows.clear(); @@ -232,6 +295,7 @@ void DumpRenderTree::initJSObjects() frame->addToJavaScriptWindowObject(QLatin1String("layoutTestController"), m_controller); frame->addToJavaScriptWindowObject(QLatin1String("eventSender"), m_eventSender); frame->addToJavaScriptWindowObject(QLatin1String("textInputController"), m_textInputController); + frame->addToJavaScriptWindowObject(QLatin1String("GCController"), m_gcController); } @@ -269,52 +333,108 @@ QString DumpRenderTree::dumpBackForwardList() return result; } +static const char *methodNameStringForFailedTest(LayoutTestController *controller) +{ + const char *errorMessage; + if (controller->shouldDumpAsText()) + errorMessage = "[documentElement innerText]"; + // FIXME: Add when we have support + //else if (controller->dumpDOMAsWebArchive()) + // errorMessage = "[[mainFrame DOMDocument] webArchive]"; + //else if (controller->dumpSourceAsWebArchive()) + // errorMessage = "[[mainFrame dataSource] webArchive]"; + else + errorMessage = "[mainFrame renderTreeAsExternalRepresentation]"; + + return errorMessage; +} + void DumpRenderTree::dump() { - QWebFrame *frame = m_page->mainFrame(); + QWebFrame *mainFrame = m_page->mainFrame(); //fprintf(stderr, " Dumping\n"); if (!m_notifier) { // Dump markup in single file mode... - QString markup = frame->toHtml(); + QString markup = mainFrame->toHtml(); fprintf(stdout, "Source:\n\n%s\n", markup.toUtf8().constData()); } // Dump render text... - QString renderDump; - if (m_controller->shouldDumpAsText()) { - renderDump = dumpFramesAsText(frame); - } else { - renderDump = frame->renderTreeDump(); - } + QString resultString; + if (m_controller->shouldDumpAsText()) + resultString = dumpFramesAsText(mainFrame); + else + resultString = mainFrame->renderTreeDump(); - if (m_controller->shouldDumpBackForwardList()) { - renderDump.append(dumpBackForwardList()); - } + if (!resultString.isEmpty()) { + fprintf(stdout, "%s", resultString.toUtf8().constData()); - if (renderDump.isEmpty()) { - printf("ERROR: nil result from %s", m_controller->shouldDumpAsText() ? "[documentElement innerText]" : "[frame renderTreeAsExternalRepresentation]"); - } else { - fprintf(stdout, "%s", renderDump.toUtf8().constData()); - } + if (m_controller->shouldDumpBackForwardList()) + fprintf(stdout, "%s", dumpBackForwardList().toUtf8().constData()); + + } else + printf("ERROR: nil result from %s", methodNameStringForFailedTest(m_controller)); // signal end of text block - fprintf(stdout, "#EOF\n"); + fputs("#EOF\n", stdout); + fputs("#EOF\n", stderr); + + if (m_dumpPixels) { + QImage image(m_page->viewportSize(), QImage::Format_ARGB32); + image.fill(Qt::white); + QPainter painter(&image); + mainFrame->render(&painter); + painter.end(); + + QCryptographicHash hash(QCryptographicHash::Md5); + for (int row = 0; row < image.height(); ++row) + hash.addData(reinterpret_cast<const char*>(image.scanLine(row)), image.width() * 4); + QString actualHash = hash.result().toHex(); + + fprintf(stdout, "\nActualHash: %s\n", qPrintable(actualHash)); + + bool dumpImage = true; + + if (!m_expectedHash.isEmpty()) { + Q_ASSERT(m_expectedHash.length() == 32); + fprintf(stdout, "\nExpectedHash: %s\n", qPrintable(m_expectedHash)); + + if (m_expectedHash == actualHash) + dumpImage = false; + } + + if (dumpImage) { + QBuffer buffer; + buffer.open(QBuffer::WriteOnly); + image.save(&buffer, "PNG"); + buffer.close(); + const QByteArray &data = buffer.data(); + + printf("Content-Type: %s\n", "image/png"); + printf("Content-Length: %lu\n", static_cast<unsigned long>(data.length())); + + const char *ptr = data.data(); + for(quint32 left = data.length(); left; ) { + quint32 block = qMin(left, quint32(1 << 15)); + quint32 written = fwrite(ptr, 1, block, stdout); + ptr += written; + left -= written; + if (written == block) + break; + } + } + + fflush(stdout); + } - // Since pixel tests are currently unsupported by Qt's DRT, - // just signal an empty pixel test block to run-webkit-tests - fprintf(stdout, "#EOF\n"); + puts("#EOF"); // terminate the (possibly empty) pixels block fflush(stdout); - - fprintf(stderr, "#EOF\n"); - fflush(stderr); - if (!m_notifier) { - // Exit now in single file mode... - quit(); - } + if (!m_notifier) + quit(); // Exit now in single file mode... } void DumpRenderTree::titleChanged(const QString &s) @@ -330,6 +450,19 @@ void DumpRenderTree::connectFrame(QWebFrame *frame) layoutTestController(), SLOT(provisionalLoad())); } +void DumpRenderTree::dumpDatabaseQuota(QWebFrame* frame, const QString& dbName) +{ + if (!m_controller->shouldDumpDatabaseCallbacks()) + return; + QWebSecurityOrigin origin = frame->securityOrigin(); + printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%s, %s, %i} database:%s\n", + origin.scheme().toUtf8().data(), + origin.host().toUtf8().data(), + origin.port(), + dbName.toUtf8().data()); + origin.setDatabaseQuota(5 * 1024 * 1024); +} + QWebPage *DumpRenderTree::createWindow() { if (!m_controller->canOpenWindows()) @@ -339,6 +472,7 @@ QWebPage *DumpRenderTree::createWindow() container->move(-1, -1); container->hide(); QWebPage *page = new WebPage(container, this); + connectFrame(page->mainFrame()); connect(m_page, SIGNAL(frameCreated(QWebFrame *)), this, SLOT(connectFrame(QWebFrame *))); windows.append(container); return page; @@ -354,6 +488,45 @@ int DumpRenderTree::windowCount() const return count + 1; } +#if defined(Q_WS_X11) +void DumpRenderTree::initializeFonts() +{ + static int numFonts = -1; + + // Some test cases may add or remove application fonts (via @font-face). + // Make sure to re-initialize the font set if necessary. + FcFontSet* appFontSet = FcConfigGetFonts(0, FcSetApplication); + if (appFontSet && numFonts >= 0 && appFontSet->nfont == numFonts) + return; + + QByteArray fontDir = getenv("WEBKIT_TESTFONTS"); + if (fontDir.isEmpty() || !QDir(fontDir).exists()) { + fprintf(stderr, + "\n\n" + "----------------------------------------------------------------------\n" + "WEBKIT_TESTFONTS environment variable is not set correctly.\n" + "This variable has to point to the directory containing the fonts\n" + "you can clone from git://gitorious.org/qtwebkit/testfonts.git\n" + "----------------------------------------------------------------------\n" + ); + exit(1); + } + char currentPath[PATH_MAX+1]; + getcwd(currentPath, PATH_MAX); + QByteArray configFile = currentPath; + FcConfig *config = FcConfigCreate(); + configFile += "/WebKitTools/DumpRenderTree/qt/fonts.conf"; + if (!FcConfigParseAndLoad (config, (FcChar8*) configFile.data(), true)) + qFatal("Couldn't load font configuration file"); + if (!FcConfigAppFontAddDir (config, (FcChar8*) fontDir.data())) + qFatal("Couldn't add font dir!"); + FcConfigSetCurrent(config); + + appFontSet = FcConfigGetFonts(config, FcSetApplication); + numFonts = appFontSet->nfont; +} +#endif + } #include "DumpRenderTree.moc" diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.h b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.h index 170ea6d..28ae1b6 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.h +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.h @@ -45,6 +45,7 @@ class QWebFrame; class LayoutTestController; class EventSender; class TextInputController; +class GCController; namespace WebCore { @@ -61,7 +62,10 @@ public: // Initialize in single-file mode. void open(const QUrl& url); - void resetJSObjects(); + void setDumpPixels(bool); + + void closeRemainingWindows(); + void resetToConsistentStateBeforeTesting(); LayoutTestController *layoutTestController() const { return m_controller; } EventSender *eventSender() const { return m_eventSender; } @@ -72,12 +76,18 @@ public: QWebPage *webPage() const { return m_page; } + +#if defined(Q_WS_X11) + static void initializeFonts(); +#endif + public Q_SLOTS: void initJSObjects(); void readStdin(int); void dump(); void titleChanged(const QString &s); void connectFrame(QWebFrame *frame); + void dumpDatabaseQuota(QWebFrame* frame, const QString& dbName); Q_SIGNALS: void quit(); @@ -87,10 +97,14 @@ private: QString dumpBackForwardList(); LayoutTestController *m_controller; + bool m_dumpPixels; + QString m_expectedHash; + QWebPage *m_page; EventSender *m_eventSender; TextInputController *m_textInputController; + GCController* m_gcController; QFile *m_stdin; QSocketNotifier* m_notifier; diff --git a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro index 4a4e790..ca97ed5 100644 --- a/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro +++ b/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro @@ -6,6 +6,8 @@ INCLUDEPATH += /usr/include/freetype2 INCLUDEPATH += ../../../JavaScriptCore DESTDIR = ../../../bin +CONFIG += link_pkgconfig +PKGCONFIG += fontconfig QT = core gui macx: QT += xml network @@ -17,6 +19,6 @@ unix:!mac { QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR } -qt-port:lessThan(QT_MINOR_VERSION, 4) { +lessThan(QT_MINOR_VERSION, 4) { DEFINES += QT_BEGIN_NAMESPACE="" QT_END_NAMESPACE="" } diff --git a/WebKitTools/DumpRenderTree/qt/ImageDiff.cpp b/WebKitTools/DumpRenderTree/qt/ImageDiff.cpp new file mode 100644 index 0000000..6aebced --- /dev/null +++ b/WebKitTools/DumpRenderTree/qt/ImageDiff.cpp @@ -0,0 +1,145 @@ +/* + Copyright (C) 2009 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. +*/ + +#include <QApplication> +#include <QBuffer> +#include <QByteArray> +#include <QImage> +#include <QStringList> + +#include <math.h> +#include <stdio.h> + +int main(int argc, char* argv[]) +{ + QCoreApplication app(argc, argv); + + qreal tolerance = 0; + + QStringList args = app.arguments(); + for (int i = 0; i < argc; ++i) + if (args[i] == "-t" || args[i] == "--tolerance") + tolerance = args[i + 1].toDouble(); + + char buffer[2048]; + QImage actualImage; + QImage 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) { + fputs("error, image size must be specified.\n", stdout); + } else { + unsigned char buffer[2048]; + QBuffer data; + + // Read all the incoming chunks + data.open(QBuffer::WriteOnly); + while (imageSize > 0) { + size_t bytesToRead = qMin(imageSize, 2048); + size_t bytesRead = fread(buffer, 1, bytesToRead, stdin); + data.write(reinterpret_cast<const char*>(buffer), bytesRead); + imageSize -= static_cast<int>(bytesRead); + } + + // Convert into QImage + QImage decodedImage; + decodedImage.loadFromData(data.data(), "PNG"); + decodedImage.convertToFormat(QImage::Format_ARGB32); + + // Place it in the right place + if (actualImage.isNull()) + actualImage = decodedImage; + else + baselineImage = decodedImage; + } + } + + if (!actualImage.isNull() && !baselineImage.isNull()) { + + if (actualImage.size() != baselineImage.size()) { + fprintf(stderr, "error, test and reference image have different properties.\n"); + fflush(stderr); + } else { + + int w = actualImage.width(); + int h = actualImage.height(); + QImage diffImage(w, h, QImage::Format_ARGB32); + + int count = 0; + qreal sum = 0; + qreal maxDistance = 0; + + for (int x = 0; x < w; ++x) + for (int y = 0; y < h; ++y) { + QRgb pixel = actualImage.pixel(x, y); + QRgb basePixel = baselineImage.pixel(x, y); + qreal red = (qRed(pixel) - qRed(basePixel)) / static_cast<float>(qMax(255 - qRed(basePixel), qRed(basePixel))); + qreal green = (qGreen(pixel) - qGreen(basePixel)) / static_cast<float>(qMax(255 - qGreen(basePixel), qGreen(basePixel))); + qreal blue = (qBlue(pixel) - qBlue(basePixel)) / static_cast<float>(qMax(255 - qBlue(basePixel), qBlue(basePixel))); + qreal alpha = (qAlpha(pixel) - qAlpha(basePixel)) / static_cast<float>(qMax(255 - qAlpha(basePixel), qAlpha(basePixel))); + qreal distance = sqrt(red * red + green * green + blue * blue + alpha * alpha) / 2.0f; + int gray = distance * qreal(255); + diffImage.setPixel(x, y, qRgb(gray, gray, gray)); + if (distance >= 1 / qreal(255)) { + count++; + sum += distance; + maxDistance = qMax(maxDistance, distance); + } + } + + qreal difference = 0; + if (count) + difference = 100 * sum / static_cast<qreal>(w * h); + if (difference <= tolerance) { + difference = 0; + } else { + difference = round(difference * 100) / 100; + difference = qMax(difference, 0.01); + } + + if (!count) { + fprintf(stdout, "diff: %01.2f%% passed\n", difference); + } else { + QBuffer buffer; + buffer.open(QBuffer::WriteOnly); + diffImage.save(&buffer, "PNG"); + buffer.close(); + const QByteArray &data = buffer.data(); + printf("Content-Length: %lu\n", static_cast<unsigned long>(data.length())); + fwrite(data.constData(), 1, data.length(), stdout); + + fprintf(stdout, "diff: %01.2f%% failed\n", difference); + } + + fflush(stdout); + } + } + } + + return 0; +} diff --git a/WebKitTools/DumpRenderTree/qt/ImageDiff.pro b/WebKitTools/DumpRenderTree/qt/ImageDiff.pro new file mode 100644 index 0000000..11ee1fa --- /dev/null +++ b/WebKitTools/DumpRenderTree/qt/ImageDiff.pro @@ -0,0 +1,18 @@ +TARGET = ImageDiff +CONFIG -= app_bundle + +include(../../../WebKit.pri) +INCLUDEPATH += ../../../JavaScriptCore +DESTDIR = ../../../bin + +QT = core gui + +SOURCES = ImageDiff.cpp + +unix:!mac { + QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR +} + +lessThan(QT_MINOR_VERSION, 4) { + DEFINES += QT_BEGIN_NAMESPACE="" QT_END_NAMESPACE="" +} diff --git a/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro b/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro new file mode 100644 index 0000000..686fbc1 --- /dev/null +++ b/WebKitTools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro @@ -0,0 +1,14 @@ +TEMPLATE = lib +TARGET = TestNetscapePlugin +VPATH = ../../gtk/TestNetscapePlugin ../../TestNetscapePlugIn.subproj +include(../../../../WebKit.pri) +DESTDIR = $$OUTPUT_DIR/lib/plugins +INCLUDEPATH += ../../../../JavaScriptCore \ + ../../gtk/TestNetscapePlugin/ForwardingHeaders \ + ../../gtk/TestNetscapePlugin/ForwardingHeaders/WebKit \ + ../../../../WebCore \ + ../../../../WebCore/bridge \ + ../../TestNetscapePlugIn.subproj +SOURCES = TestNetscapePlugin.cpp \ + PluginObject.cpp \ + TestObject.cpp \ diff --git a/WebKitTools/DumpRenderTree/qt/WorkQueue.cpp b/WebKitTools/DumpRenderTree/qt/WorkQueue.cpp index 8c6d48c..ae24e0d 100644 --- a/WebKitTools/DumpRenderTree/qt/WorkQueue.cpp +++ b/WebKitTools/DumpRenderTree/qt/WorkQueue.cpp @@ -31,7 +31,6 @@ #include "WorkQueue.h" #include "WorkQueueItem.h" -#include <wtf/Assertions.h> static const unsigned queueLength = 1024; @@ -52,8 +51,8 @@ WorkQueue::WorkQueue() void WorkQueue::queue(WorkQueueItem* item) { - ASSERT(endOfQueue < queueLength); - ASSERT(endOfQueue >= startOfQueue); + Q_ASSERT(endOfQueue < queueLength); + Q_ASSERT(endOfQueue >= startOfQueue); if (m_frozen) { delete item; @@ -65,7 +64,7 @@ void WorkQueue::queue(WorkQueueItem* item) WorkQueueItem* WorkQueue::dequeue() { - ASSERT(endOfQueue >= startOfQueue); + Q_ASSERT(endOfQueue >= startOfQueue); if (startOfQueue == endOfQueue) return 0; @@ -88,3 +87,18 @@ void WorkQueue::clear() startOfQueue = 0; endOfQueue = 0; } + +bool WorkQueue::processWork() +{ + bool startedLoad = false; + + while (!startedLoad && count()) { + WorkQueueItem* item = dequeue(); + Q_ASSERT(item); + startedLoad = item->invoke(); + delete item; + } + + // If we're done and we didn't start a load, then we're really done, so return true. + return !startedLoad; +} diff --git a/WebKitTools/DumpRenderTree/qt/WorkQueue.h b/WebKitTools/DumpRenderTree/qt/WorkQueue.h index 64c775a..8adbfcd 100644 --- a/WebKitTools/DumpRenderTree/qt/WorkQueue.h +++ b/WebKitTools/DumpRenderTree/qt/WorkQueue.h @@ -43,6 +43,8 @@ public: void setFrozen(bool b) { m_frozen = b; } + bool processWork(); // Returns true if all work is done, false if we started a load. + private: WorkQueue(); diff --git a/WebKitTools/DumpRenderTree/qt/WorkQueueItem.h b/WebKitTools/DumpRenderTree/qt/WorkQueueItem.h index 35aa598..0e10f62 100644 --- a/WebKitTools/DumpRenderTree/qt/WorkQueueItem.h +++ b/WebKitTools/DumpRenderTree/qt/WorkQueueItem.h @@ -38,7 +38,7 @@ class WorkQueueItem { public: WorkQueueItem(QWebPage *page) : m_webPage(page) {} virtual ~WorkQueueItem() { } - virtual void invoke() const = 0; + virtual bool invoke() const = 0; protected: QPointer<QWebPage> m_webPage; @@ -56,7 +56,7 @@ public: QString url() const { return m_url; } QString target() const { return m_target; } - virtual void invoke() const; + virtual bool invoke() const; private: QString m_url; @@ -69,7 +69,7 @@ public: : WorkQueueItem(page) { } - virtual void invoke() const; + virtual bool invoke() const; }; class ScriptItem : public WorkQueueItem { @@ -82,7 +82,7 @@ public: QString script() const { return m_script; } - virtual void invoke() const; + virtual bool invoke() const; private: QString m_script; @@ -90,7 +90,7 @@ private: class BackForwardItem : public WorkQueueItem { public: - virtual void invoke() const; + virtual bool invoke() const; protected: BackForwardItem(int howFar, QWebPage *page) diff --git a/WebKitTools/DumpRenderTree/qt/jsobjects.cpp b/WebKitTools/DumpRenderTree/qt/jsobjects.cpp index 2b0f174..7e5e168 100644 --- a/WebKitTools/DumpRenderTree/qt/jsobjects.cpp +++ b/WebKitTools/DumpRenderTree/qt/jsobjects.cpp @@ -30,6 +30,8 @@ #include <qwebpage.h> #include <qwebhistory.h> #include <qwebframe.h> +#include <qwebsecurityorigin.h> +#include <qwebdatabase.h> #include <qevent.h> #include <qapplication.h> #include <qevent.h> @@ -57,7 +59,7 @@ QWebFrame *findFrameNamed(const QString &frameName, QWebFrame *frame) return 0; } -void LoadItem::invoke() const +bool LoadItem::invoke() const { //qDebug() << ">>>LoadItem::invoke"; Q_ASSERT(m_webPage); @@ -70,29 +72,35 @@ void LoadItem::invoke() const frame = findFrameNamed(t, m_webPage->mainFrame()); if (!frame) - return; + return false; frame->load(url()); + return true; } -void ReloadItem::invoke() const +bool ReloadItem::invoke() const { //qDebug() << ">>>ReloadItem::invoke"; Q_ASSERT(m_webPage); m_webPage->triggerAction(QWebPage::Reload); + return true; } -void ScriptItem::invoke() const +bool ScriptItem::invoke() const { //qDebug() << ">>>ScriptItem::invoke"; Q_ASSERT(m_webPage); m_webPage->mainFrame()->evaluateJavaScript(script()); + return true; } -void BackForwardItem::invoke() const +bool BackForwardItem::invoke() const { //qDebug() << ">>>BackForwardItem::invoke"; Q_ASSERT(m_webPage); + if (!m_howFar) + return false; + if (m_howFar > 0) { for (int i = 0; i != m_howFar; ++i) m_webPage->triggerAction(QWebPage::Forward); @@ -100,13 +108,13 @@ void BackForwardItem::invoke() const for (int i = 0; i != m_howFar; --i) m_webPage->triggerAction(QWebPage::Back); } + return true; } LayoutTestController::LayoutTestController(WebCore::DumpRenderTree *drt) : QObject() , m_drt(drt) { - m_timeoutTimer = 0; reset(); } @@ -119,36 +127,30 @@ void LayoutTestController::reset() m_canOpenWindows = false; m_waitForDone = false; m_dumpTitleChanges = false; - if (m_timeoutTimer) { - killTimer(m_timeoutTimer); - m_timeoutTimer = 0; - } + m_dumpDatabaseCallbacks = false; + m_timeoutTimer.stop(); m_topLoadingFrame = 0; qt_dump_editing_callbacks(false); qt_dump_resource_load_callbacks(false); + QWebSettings::globalSettings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, false); } void LayoutTestController::processWork() { qDebug() << ">>>processWork"; - // quit doing work once a load is in progress - while (WorkQueue::shared()->count() > 0 && !m_topLoadingFrame) { - WorkQueueItem* item = WorkQueue::shared()->dequeue(); - Q_ASSERT(item); - item->invoke(); - delete item; - } - // if we didn't start a new load, then we finished all the commands, so we're ready to dump state - if (!m_topLoadingFrame && !shouldWaitUntilDone()) { + if (!WorkQueue::shared()->processWork() && !shouldWaitUntilDone()) { emit done(); m_isLoading = false; } } -void LayoutTestController::maybeDump(bool) +// Called on loadFinished on mainFrame. +void LayoutTestController::maybeDump(bool success) { + Q_ASSERT(sender() == m_topLoadingFrame); + m_topLoadingFrame = 0; WorkQueue::shared()->setFrozen(true); // first complete load freezes the queue for the rest of this test @@ -156,7 +158,8 @@ void LayoutTestController::maybeDump(bool) if (WorkQueue::shared()->count()) QTimer::singleShot(0, this, SLOT(processWork())); else { - emit done(); + if (success) + emit done(); m_isLoading = false; } } @@ -166,16 +169,15 @@ void LayoutTestController::waitUntilDone() { //qDebug() << ">>>>waitForDone"; m_waitForDone = true; - m_timeoutTimer = startTimer(11000); + m_timeoutTimer.start(11000, this); } void LayoutTestController::notifyDone() { //qDebug() << ">>>>notifyDone"; - if (!m_timeoutTimer) + if (!m_timeoutTimer.isActive()) return; - killTimer(m_timeoutTimer); - m_timeoutTimer = 0; + m_timeoutTimer.stop(); emit done(); m_isLoading = false; } @@ -240,10 +242,14 @@ void LayoutTestController::provisionalLoad() m_topLoadingFrame = frame; } -void LayoutTestController::timerEvent(QTimerEvent *) +void LayoutTestController::timerEvent(QTimerEvent *ev) { - qDebug() << ">>>>>>>>>>>>> timeout"; - notifyDone(); + if (ev->timerId() == m_timeoutTimer.timerId()) { + qDebug() << ">>>>>>>>>>>>> timeout"; + notifyDone(); + } else { + QObject::timerEvent(ev); + } } QString LayoutTestController::encodeHostName(const QString &host) @@ -266,15 +272,14 @@ void LayoutTestController::setJavaScriptProfilingEnabled(bool enable) qt_drt_setJavaScriptProfilingEnabled(m_topLoadingFrame, enable); } -void LayoutTestController::setFixedLayoutSize(int width, int height) +void LayoutTestController::setFixedContentsSize(int width, int height) { - m_topLoadingFrame->page()->setFixedLayoutSize(QSize(width, height)); + m_topLoadingFrame->page()->setFixedContentsSize(QSize(width, height)); } - -void LayoutTestController::setUseFixedLayout(bool enable) +void LayoutTestController::setPrivateBrowsingEnabled(bool enable) { - m_topLoadingFrame->page()->setUseFixedLayout(enable); + QWebSettings::globalSettings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, enable); } bool LayoutTestController::pauseAnimationAtTimeOnElementWithId(const QString &animationName, @@ -302,6 +307,29 @@ unsigned LayoutTestController::numberOfActiveAnimations() const return qt_drt_numberOfActiveAnimations(frame); } +void LayoutTestController::disableImageLoading() +{ + // FIXME: Implement for testing fix for https://bugs.webkit.org/show_bug.cgi?id=27896 + // Also need to make sure image loading is re-enabled for each new test. +} + +void LayoutTestController::dispatchPendingLoadRequests() +{ + // FIXME: Implement for testing fix for 6727495 +} + +void LayoutTestController::setDatabaseQuota(int size) +{ + if (!m_topLoadingFrame) + return; + m_topLoadingFrame->securityOrigin().setDatabaseQuota(size); +} + +void LayoutTestController::clearAllDatabases() +{ + QWebDatabase::removeAllDatabases(); +} + EventSender::EventSender(QWebPage *parent) : QObject(parent) { @@ -394,6 +422,20 @@ void EventSender::keyDown(const QString &string, const QStringList &modifiers) code = Qt::Key_End; modifs &= ~Qt::MetaModifier; } + } else if (code == 0xf700) { + s = QString(); + code = Qt::Key_Up; + if (modifs & Qt::MetaModifier) { + code = Qt::Key_PageUp; + modifs &= ~Qt::MetaModifier; + } + } else if (code == 0xf701) { + s = QString(); + code = Qt::Key_Down; + if (modifs & Qt::MetaModifier) { + code = Qt::Key_PageDown; + modifs &= ~Qt::MetaModifier; + } } else if (code == 'a' && modifs == Qt::ControlModifier) { s = QString(); code = Qt::Key_Home; @@ -518,3 +560,28 @@ void TextInputController::doCommand(const QString &command) QKeyEvent event2(QEvent::KeyRelease, keycode, modifiers); QApplication::sendEvent(parent(), &event2); } + +GCController::GCController(QWebPage* parent) + : QObject(parent) +{ +} + +extern int qt_drt_javaScriptObjectsCount(); +extern void qt_drt_garbageCollector_collect(); + +extern void qt_drt_garbageCollector_collectOnAlternateThread(bool waitUntilDone); + +void GCController::collect() const +{ + qt_drt_garbageCollector_collect(); +} + +void GCController::collectOnAlternateThread(bool waitUntilDone) const +{ + qt_drt_garbageCollector_collectOnAlternateThread(waitUntilDone); +} + +size_t GCController::getJSObjectCount() const +{ + return qt_drt_javaScriptObjectsCount(); +} diff --git a/WebKitTools/DumpRenderTree/qt/jsobjects.h b/WebKitTools/DumpRenderTree/qt/jsobjects.h index b136e8d..8e6dd20 100644 --- a/WebKitTools/DumpRenderTree/qt/jsobjects.h +++ b/WebKitTools/DumpRenderTree/qt/jsobjects.h @@ -34,6 +34,7 @@ #include <qpoint.h> #include <qstringlist.h> #include <qsize.h> +#include <qbasictimer.h> class QWebFrame; namespace WebCore { @@ -51,6 +52,7 @@ public: bool shouldDumpAsText() const { return m_textDump; } bool shouldDumpBackForwardList() const { return m_dumpBackForwardList; } bool shouldDumpChildrenAsText() const { return m_dumpChildrenAsText; } + bool shouldDumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; } bool shouldWaitUntilDone() const { return m_waitForDone; } bool canOpenWindows() const { return m_canOpenWindows; } bool shouldDumpTitleChanges() const { return m_dumpTitleChanges; } @@ -67,6 +69,7 @@ public slots: void maybeDump(bool ok); void dumpAsText() { m_textDump = true; } void dumpChildFramesAsText() { m_dumpChildrenAsText = true; } + void dumpDatabaseCallbacks() { m_dumpDatabaseCallbacks = true; } void setCanOpenWindows() { m_canOpenWindows = true; } void waitUntilDone(); void notifyDone(); @@ -88,12 +91,17 @@ public slots: QString decodeHostName(const QString &host); void dumpSelectionRect() const {} void setJavaScriptProfilingEnabled(bool enable); - void setFixedLayoutSize(int width, int height); - void setUseFixedLayout(bool enable); + void setFixedContentsSize(int width, int height); + void setPrivateBrowsingEnabled(bool enable); bool pauseAnimationAtTimeOnElementWithId(const QString &animationName, double time, const QString &elementId); bool pauseTransitionAtTimeOnElementWithId(const QString &propertyName, double time, const QString &elementId); unsigned numberOfActiveAnimations() const; + void dispatchPendingLoadRequests(); + void disableImageLoading(); + + void setDatabaseQuota(int size); + void clearAllDatabases(); private slots: void processWork(); @@ -106,7 +114,8 @@ private: bool m_canOpenWindows; bool m_waitForDone; bool m_dumpTitleChanges; - int m_timeoutTimer; + bool m_dumpDatabaseCallbacks; + QBasicTimer m_timeoutTimer; QWebFrame *m_topLoadingFrame; WebCore::DumpRenderTree *m_drt; }; @@ -156,4 +165,16 @@ public slots: // void conversationIdentifier(); }; +class GCController : public QObject +{ + Q_OBJECT +public: + GCController(QWebPage* parent); + +public slots: + void collect() const; + void collectOnAlternateThread(bool waitUntilDone) const; + size_t getJSObjectCount() const; +}; + #endif diff --git a/WebKitTools/DumpRenderTree/qt/main.cpp b/WebKitTools/DumpRenderTree/qt/main.cpp index 1674764..ae67a59 100644 --- a/WebKitTools/DumpRenderTree/qt/main.cpp +++ b/WebKitTools/DumpRenderTree/qt/main.cpp @@ -35,6 +35,9 @@ #include <qdir.h> #include <qdebug.h> #include <qfont.h> +#include <qwebsettings.h> +#include <qwebdatabase.h> +#include <qdesktopservices.h> #ifdef Q_WS_X11 #include <qx11info_x11.h> @@ -94,28 +97,10 @@ int main(int argc, char* argv[]) { #ifdef Q_WS_X11 FcInit(); - FcConfig *config = FcConfigCreate(); - QByteArray fontDir = getenv("WEBKIT_TESTFONTS"); - if (fontDir.isEmpty() || !QDir(fontDir).exists()) { - fprintf(stderr, - "\n\n" - "--------------------------------------------------------------------\n" - "WEBKIT_TESTFONTS environment variable is not set correctly.\n" - "This variable has to point to the directory containing the fonts\n" - "you can checkout from svn://labs.trolltech.com/svn/webkit/testfonts\n" - "--------------------------------------------------------------------\n" -); - exit(1); - } - char currentPath[PATH_MAX+1]; - getcwd(currentPath, PATH_MAX); - QByteArray configFile = currentPath; - configFile += "/WebKitTools/DumpRenderTree/qt/fonts.conf"; - if (!FcConfigParseAndLoad (config, (FcChar8*) configFile.data(), true)) - qFatal("Couldn't load font configuration file"); - if (!FcConfigAppFontAddDir (config, (FcChar8*) fontDir.data())) - qFatal("Couldn't add font dir!"); - FcConfigSetCurrent(config); + WebCore::DumpRenderTree::initializeFonts(); +#if QT_VERSION >= 0x040500 + QApplication::setGraphicsSystem("raster"); +#endif #endif QApplication app(argc, argv); #ifdef Q_WS_X11 @@ -153,6 +138,13 @@ int main(int argc, char* argv[]) WebCore::DumpRenderTree dumper; + if (args.contains("--pixel-tests")) + dumper.setDumpPixels(true); + + QString dbDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation) + QDir::separator() + "qtwebkitdrt"; + QWebSettings::setOfflineStoragePath(dbDir); + QWebDatabase::removeAllDatabases(); + if (args.last() == QLatin1String("-")) { dumper.open(); } else { diff --git a/WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp b/WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp index 952ce5d..cfcfc54 100644 --- a/WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp +++ b/WebKitTools/DumpRenderTree/win/AccessibilityUIElementWin.cpp @@ -73,6 +73,18 @@ void AccessibilityUIElement::getChildrenWithRange(Vector<AccessibilityUIElement> elementVector.append(getChildAtIndex(i)); } +int AccessibilityUIElement::childrenCount() +{ + long childCount; + m_element->get_accChildCount(&childCount); + return childCount; +} + +AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int x, int y) +{ + return 0; +} + AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index) { COMPtr<IDispatch> child; @@ -165,6 +177,27 @@ JSStringRef AccessibilityUIElement::description() return JSStringCreateWithCharacters(description.data(), description.length()); } +JSStringRef AccessibilityUIElement::language() +{ + return JSStringCreateWithCharacters(0, 0); +} + +double AccessibilityUIElement::x() +{ + long x, y, width, height; + if (FAILED(m_element->accLocation(&x, &y, &width, &height, self()))) + return 0; + return x; +} + +double AccessibilityUIElement::y() +{ + long x, y, width, height; + if (FAILED(m_element->accLocation(&x, &y, &width, &height, self()))) + return 0; + return y; +} + double AccessibilityUIElement::width() { long x, y, width, height; @@ -181,6 +214,21 @@ double AccessibilityUIElement::height() return height; } +double AccessibilityUIElement::clickPointX() +{ + return 0; +} + +double AccessibilityUIElement::clickPointY() +{ + return 0; +} + +JSStringRef AccessibilityUIElement::valueDescription() +{ + return 0; +} + double AccessibilityUIElement::intValue() { BSTR valueBSTR; @@ -202,7 +250,17 @@ double AccessibilityUIElement::maxValue() return 0; } -bool AccessibilityUIElement::supportsPressAction() +bool AccessibilityUIElement::isActionSupported(JSStringRef action) +{ + return false; +} + +bool AccessibilityUIElement::isEnabled() +{ + return false; +} + +bool AccessibilityUIElement::isRequired() const { return false; } @@ -291,3 +349,10 @@ bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute) return false; } +void AccessibilityUIElement::increment() +{ +} + +void AccessibilityUIElement::decrement() +{ +} diff --git a/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp b/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp index 28a0336..d262826 100644 --- a/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp +++ b/WebKitTools/DumpRenderTree/win/DumpRenderTree.cpp @@ -50,11 +50,13 @@ #include <wtf/RetainPtr.h> #include <wtf/Vector.h> #include <windows.h> +#if PLATFORM(CFNETWORK) #include <CFNetwork/CFURLCachePriv.h> +#endif #include <CoreFoundation/CoreFoundation.h> #include <JavaScriptCore/JavaScriptCore.h> -#include <WebKit/ForEachCoClass.h> #include <WebKit/WebKit.h> +#include <WebKit/WebKitCOMAPI.h> using namespace std; @@ -215,6 +217,7 @@ static void initialize() 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"), @@ -230,7 +233,7 @@ static void initialize() wstring resourcesPath = fontsPath(); COMPtr<IWebTextRenderer> textRenderer; - if (SUCCEEDED(CoCreateInstance(CLSID_WebTextRenderer, 0, CLSCTX_ALL, IID_IWebTextRenderer, (void**)&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()); @@ -403,6 +406,24 @@ static void dumpHistoryItem(IWebHistoryItem* item, int indent, bool current) 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); @@ -626,14 +647,14 @@ void dump() fail: SysFreeString(resultString); - // This will exit from our message loop + // This will exit from our message loop. PostQuitMessage(0); done = true; } static bool shouldLogFrameLoadDelegates(const char* pathOrURL) { - return strstr(pathOrURL, "loading/"); + return strstr(pathOrURL, "/loading/") || strstr(pathOrURL, "\\loading\\"); } static void resetWebViewToConsistentStateBeforeTesting() @@ -643,6 +664,8 @@ static void resetWebViewToConsistentStateBeforeTesting() return; webView->setPolicyDelegate(0); + policyDelegate->setPermissive(false); + policyDelegate->setControllerToNotifyDone(0); COMPtr<IWebIBActions> webIBActions(Query, webView); if (webIBActions) { @@ -654,6 +677,7 @@ static void resetWebViewToConsistentStateBeforeTesting() if (SUCCEEDED(webView->preferences(&preferences))) { preferences->setPrivateBrowsingEnabled(FALSE); preferences->setJavaScriptCanOpenWindowsAutomatically(TRUE); + preferences->setLoadsImagesAutomatically(TRUE); if (persistentUserStyleSheetLocation) { Vector<wchar_t> urlCharacters(CFStringGetLength(persistentUserStyleSheetLocation.get())); @@ -669,6 +693,8 @@ static void resetWebViewToConsistentStateBeforeTesting() if (prefsPrivate) { prefsPrivate->setAuthorAndUserStylesEnabled(TRUE); prefsPrivate->setDeveloperExtrasEnabled(FALSE); + prefsPrivate->setShouldPaintNativeControls(FALSE); // FIXME - need to make DRT pass with Windows native controls <http://bugs.webkit.org/show_bug.cgi?id=25592> + prefsPrivate->setXSSAuditorEnabled(FALSE); } } @@ -689,6 +715,8 @@ static void resetWebViewToConsistentStateBeforeTesting() SetFocus(viewWindow); webViewPrivate->clearMainFrameName(); + + sharedUIDelegate->resetUndoManager(); } static void runTest(const string& testPathOrURL) @@ -735,12 +763,11 @@ static void runTest(const string& testPathOrURL) if (shouldLogFrameLoadDelegates(pathOrURL.c_str())) gLayoutTestController->setDumpFrameLoadCallbacks(true); - COMPtr<IWebHistory> history(Create, CLSID_WebHistory); - if (history) + COMPtr<IWebHistory> history; + if (SUCCEEDED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(history), reinterpret_cast<void**>(&history)))) history->setOptionalSharedHistory(0); resetWebViewToConsistentStateBeforeTesting(); - sharedUIDelegate->resetUndoManager(); prevTestBFItem = 0; COMPtr<IWebView> webView; @@ -757,7 +784,7 @@ static void runTest(const string& testPathOrURL) webView->hostWindow(reinterpret_cast<OLE_HANDLE*>(&hostWindow)); COMPtr<IWebMutableURLRequest> request; - HRESULT hr = CoCreateInstance(CLSID_WebMutableURLRequest, 0, CLSCTX_ALL, IID_IWebMutableURLRequest, (void**)&request); + HRESULT hr = WebKitCreateInstance(CLSID_WebMutableURLRequest, 0, IID_IWebMutableURLRequest, (void**)&request); if (FAILED(hr)) goto exit; @@ -777,6 +804,8 @@ static void runTest(const string& testPathOrURL) DispatchMessage(&msg); } + resetWebViewToConsistentStateBeforeTesting(); + frame->stopLoading(); if (::gLayoutTestController->closeRemainingWindowsWhenComplete()) { @@ -963,7 +992,7 @@ IWebView* createWebViewAndOffscreenWindow(HWND* webViewWindow) IWebView* webView; - HRESULT hr = CoCreateInstance(CLSID_WebView, 0, CLSCTX_ALL, IID_IWebView, (void**)&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; @@ -1034,6 +1063,27 @@ IWebView* createWebViewAndOffscreenWindow(HWND* webViewWindow) return webView; } +#if PLATFORM(CFNETWORK) +RetainPtr<CFURLCacheRef> sharedCFURLCache() +{ + HMODULE module = GetModuleHandle(TEXT("CFNetwork_debug.dll")); + if (!module) + module = GetModuleHandle(TEXT("CFNetwork.dll")); + if (!module) + return 0; + + typedef CFURLCacheRef (*CFURLCacheCopySharedURLCacheProcPtr)(void); + if (CFURLCacheCopySharedURLCacheProcPtr copyCache = reinterpret_cast<CFURLCacheCopySharedURLCacheProcPtr>(GetProcAddress(module, "CFURLCacheCopySharedURLCache"))) + return RetainPtr<CFURLCacheRef>(AdoptCF, copyCache()); + + typedef CFURLCacheRef (*CFURLCacheSharedURLCacheProcPtr)(void); + if (CFURLCacheSharedURLCacheProcPtr sharedCache = reinterpret_cast<CFURLCacheSharedURLCacheProcPtr>(GetProcAddress(module, "CFURLCacheSharedURLCache"))) + return sharedCache(); + + return 0; +} +#endif + int main(int argc, char* argv[]) { leakChecking = false; @@ -1075,13 +1125,27 @@ int main(int argc, char* argv[]) sharedEditingDelegate.adoptRef(new EditingDelegate); sharedResourceLoadDelegate.adoptRef(new ResourceLoadDelegate); + // 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); + COMPtr<IWebView> webView(AdoptCOM, createWebViewAndOffscreenWindow(&webViewWindow)); if (!webView) return -1; COMPtr<IWebIconDatabase> iconDatabase; COMPtr<IWebIconDatabase> tmpIconDatabase; - if (FAILED(CoCreateInstance(CLSID_WebIconDatabase, 0, CLSCTX_ALL, IID_IWebIconDatabase, (void**)&tmpIconDatabase))) + if (FAILED(WebKitCreateInstance(CLSID_WebIconDatabase, 0, IID_IWebIconDatabase, (void**)&tmpIconDatabase))) return -1; if (FAILED(tmpIconDatabase->sharedIconDatabase(&iconDatabase))) return -1; @@ -1089,7 +1153,10 @@ int main(int argc, char* argv[]) if (FAILED(webView->mainFrame(&frame))) return -1; - CFURLCacheRemoveAllCachedResponses(CFURLCacheSharedURLCache()); +#if PLATFORM(CFNETWORK) + RetainPtr<CFURLCacheRef> urlCache = sharedCFURLCache(); + CFURLCacheRemoveAllCachedResponses(urlCache.get()); +#endif #ifdef _DEBUG _CrtMemState entryToMainMemCheckpoint; diff --git a/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj b/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj index e094bde..b1bd3ab 100644 --- a/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj +++ b/WebKitTools/DumpRenderTree/win/DumpRenderTree.vcproj @@ -39,7 +39,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cg";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
+ AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cg";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\private";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\private\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\Include\private";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
PreprocessorDefinitions="_CONSOLE"
DisableSpecificWarnings="4146"
ForcedIncludeFiles="DumpRenderTreePrefix.h"
@@ -55,7 +55,7 @@ />
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib WTF$(WebKitConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
+ AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
SubSystem="1"
@@ -66,8 +66,6 @@ />
<Tool
Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
/>
<Tool
Name="VCXDCMakeTool"
@@ -86,7 +84,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if "$(ARCHIVE_BUILD)"=="" (if not "$(PRODUCTION)"=="" exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
<Configuration
@@ -114,7 +112,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cg";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
+ AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cg";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\private";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\private\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\Include\private";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
PreprocessorDefinitions="_CONSOLE"
DisableSpecificWarnings="4146"
ForcedIncludeFiles="DumpRenderTreePrefix.h"
@@ -130,7 +128,7 @@ />
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib WTF$(WebKitConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
+ AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
SubSystem="1"
@@ -141,8 +139,6 @@ />
<Tool
Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
/>
<Tool
Name="VCXDCMakeTool"
@@ -161,7 +157,7 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if "$(ARCHIVE_BUILD)"=="" (if not "$(PRODUCTION)"=="" exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
<Configuration
@@ -188,7 +184,7 @@ />
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cg";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
+ AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cg";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\private";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\private\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\Include\private";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
PreprocessorDefinitions="_CONSOLE;DEBUG_WEBKIT_HAS_SUFFIX"
DisableSpecificWarnings="4146"
ForcedIncludeFiles="DumpRenderTreePrefix.h"
@@ -204,7 +200,7 @@ />
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib WTF$(WebKitConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
+ AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
AdditionalLibraryDirectories=""
DelayLoadDLLs=""
SubSystem="1"
@@ -214,8 +210,6 @@ />
<Tool
Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
/>
<Tool
Name="VCXDCMakeTool"
@@ -234,7 +228,152 @@ />
<Tool
Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if "$(ARCHIVE_BUILD)"=="" (if not "$(PRODUCTION)"=="" exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug_Cairo|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops;$(WebKitLibrariesDir)\tools\vsprops\WinCairo.vsprops"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\include\DumpRenderTree"
mkdir 2>NUL "$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders"
mkdir 2>NUL "$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf"

xcopy /y /d "$(ProjectDir)\..\ForwardingHeaders\wtf\*.h" "$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf"
"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cairo";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\include\private";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\private\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\Include\private";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
+ PreprocessorDefinitions="_CONSOLE"
+ DisableSpecificWarnings="4146"
+ ForcedIncludeFiles="DumpRenderTreePrefix.h"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CFLite_Debug.lib cairo.lib jpeg.lib libpng.lib libcurl_imp.lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
+ AdditionalLibraryDirectories=""
+ DelayLoadDLLs=""
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release_Cairo|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops;$(WebKitLibrariesDir)\tools\vsprops\WinCairo.vsprops"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\include\DumpRenderTree"
mkdir 2>NUL "$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders"
mkdir 2>NUL "$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf"

xcopy /y /d "$(ProjectDir)\..\ForwardingHeaders\wtf\*.h" "$(WebKitOutputDir)\include\DumpRenderTree\ForwardingHeaders\wtf"
"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(ProjectDir)\.";"$(ProjectDir)\..";"$(ProjectDir)\..\cairo";"$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\private";"$(WebKitOutputDir)\Include\DumpRenderTree\ForwardingHeaders";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\private\JavaScriptCore";"$(WebKitLibrariesDir)\Include";"$(WebKitLibrariesDir)\Include\private";"$(WebKitLibrariesDir)\include\pthreads";"$(WebKitOutputDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\WebCore";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
+ PreprocessorDefinitions="_CONSOLE"
+ DisableSpecificWarnings="4146"
+ ForcedIncludeFiles="DumpRenderTreePrefix.h"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKitGUID$(WebKitConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CFLite.lib cairo.lib jpeg.lib libpng.lib libcurl_imp.lib pthreadVC2$(LibraryConfigSuffix).lib gdi32.lib ole32.lib oleaut32.lib user32.lib shlwapi.lib oleacc.lib"
+ AdditionalLibraryDirectories=""
+ DelayLoadDLLs=""
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CFNetwork$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CFNetwork.resources" "$(WebKitOutputDir)\bin\CFNetwork.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\dnssd.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc40$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxml2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\libxslt$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\pthreadVC2$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\SQLite3$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
/>
</Configuration>
</Configurations>
@@ -374,16 +513,108 @@ >
</File>
<File
- RelativePath=".\PixelDumpSupport.h"
+ RelativePath="..\PixelDumpSupport.cpp"
>
</File>
<File
+ RelativePath="..\PixelDumpSupport.h"
+ >
+ </File>
+ <File
+ RelativePath="..\cairo\PixelDumpSupportCairo.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug_Internal|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="..\cairo\PixelDumpSupportCairo.h"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug_Internal|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath="..\cg\PixelDumpSupportCG.cpp"
>
+ <FileConfiguration
+ Name="Debug_Cairo|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release_Cairo|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath="..\cg\PixelDumpSupportCG.h"
>
+ <FileConfiguration
+ Name="Debug_Cairo|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release_Cairo|Win32"
+ ExcludedFromBuild="true"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ </FileConfiguration>
</File>
<File
RelativePath=".\PixelDumpSupportWin.cpp"
diff --git a/WebKitTools/DumpRenderTree/win/EventSender.cpp b/WebKitTools/DumpRenderTree/win/EventSender.cpp index efecc03..ca897fb 100644 --- a/WebKitTools/DumpRenderTree/win/EventSender.cpp +++ b/WebKitTools/DumpRenderTree/win/EventSender.cpp @@ -399,7 +399,7 @@ static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JS newKeyState[VK_SHIFT] = 0x80; if (argumentCount > 1) { - JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], exception); + 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) { diff --git a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp b/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp index b18b961..5f0e02b 100644 --- a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp +++ b/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2005, 2006, 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 @@ -99,8 +99,6 @@ HRESULT STDMETHODCALLTYPE FrameLoadDelegate::QueryInterface(REFIID riid, void** *ppvObject = static_cast<IWebFrameLoadDelegate*>(this); else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegate)) *ppvObject = static_cast<IWebFrameLoadDelegate*>(this); - else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegate2)) - *ppvObject = static_cast<IWebFrameLoadDelegate*>(this); else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegatePrivate)) *ppvObject = static_cast<IWebFrameLoadDelegatePrivate*>(this); else @@ -126,12 +124,11 @@ ULONG STDMETHODCALLTYPE FrameLoadDelegate::Release(void) HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didStartProvisionalLoadForFrame( - /* [in] */ IWebView* webView, - /* [in] */ IWebFrame* frame) + /* [in] */ IWebView* webView, + /* [in] */ IWebFrame* frame) { if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) - printf("%s - didStartProvisionalLoadForFrame\n", - descriptionSuitableForTestResult(frame).c_str()); + 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. @@ -141,14 +138,23 @@ HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didStartProvisionalLoadForFrame( return S_OK; } +HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didReceiveServerRedirectForProvisionalLoadForFrame( + /* [in] */ IWebView *webView, + /* [in] */ IWebFrame *frame) +{ + if (!done && gLayoutTestController->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 && gLayoutTestController->dumpFrameLoadCallbacks()) - printf("%s - didFailProvisionalLoadWithError\n", - descriptionSuitableForTestResult(frame).c_str()); + printf("%s - didFailProvisionalLoadWithError\n", descriptionSuitableForTestResult(frame).c_str()); return S_OK; } @@ -157,24 +163,22 @@ HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didCommitLoadForFrame( /* [in] */ IWebView *webView, /* [in] */ IWebFrame *frame) { + if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) + printf("%s - didCommitLoadForFrame\n", descriptionSuitableForTestResult(frame).c_str()); + COMPtr<IWebViewPrivate> webViewPrivate; HRESULT hr = webView->QueryInterface(&webViewPrivate); if (FAILED(hr)) return hr; webViewPrivate->updateFocusedAndActiveState(); - if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) - printf("%s - didCommitLoadForFrame\n", - descriptionSuitableForTestResult(frame).c_str()); - - return S_OK; } HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didReceiveTitle( - /* [in] */ IWebView *webView, - /* [in] */ BSTR title, - /* [in] */ IWebFrame *frame) + /* [in] */ IWebView *webView, + /* [in] */ BSTR title, + /* [in] */ IWebFrame *frame) { if (::gLayoutTestController->dumpTitleChanges() && !done) printf("TITLE CHANGED: %S\n", title ? title : L""); @@ -183,15 +187,12 @@ HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didReceiveTitle( void FrameLoadDelegate::processWork() { - // quit doing work once a load is in progress - while (!topLoadingFrame && WorkQueue::shared()->count()) { - WorkQueueItem* item = WorkQueue::shared()->dequeue(); - ASSERT(item); - item->invoke(); - } + // if another load started, then wait for it to complete. + if (topLoadingFrame) + return; - // if we didn't start a new load, then we finished all the commands, so we're ready to dump state - if (!topLoadingFrame && !::gLayoutTestController->waitToDump()) + // if we finish all the commands, we're ready to dump state + if (WorkQueue::shared()->processWork() && !::gLayoutTestController->waitToDump()) dump(); } @@ -225,12 +226,11 @@ void FrameLoadDelegate::locationChangeDone(IWebError*, IWebFrame* frame) } HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFinishLoadForFrame( - /* [in] */ IWebView* webView, - /* [in] */ IWebFrame* frame) + /* [in] */ IWebView* webView, + /* [in] */ IWebFrame* frame) { if (!done && gLayoutTestController->dumpFrameLoadCallbacks()) - printf("%s - didFinishLoadForFrame\n", - descriptionSuitableForTestResult(frame).c_str()); + printf("%s - didFinishLoadForFrame\n", descriptionSuitableForTestResult(frame).c_str()); locationChangeDone(0, frame); return S_OK; @@ -239,24 +239,52 @@ HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFinishLoadForFrame( HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFailLoadWithError( /* [in] */ IWebView* webView, /* [in] */ IWebError* error, - /* [in] */ IWebFrame* forFrame) + /* [in] */ IWebFrame* frame) { - locationChangeDone(error, forFrame); + if (!done && gLayoutTestController->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 && gLayoutTestController->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 && gLayoutTestController->dumpFrameLoadCallbacks()) + printf("%s - didCancelClientRedirectForFrame\n", descriptionSuitableForTestResult(frame).c_str()); + + return S_OK; +} + + HRESULT STDMETHODCALLTYPE FrameLoadDelegate::willCloseFrame( - /* [in] */ IWebView *webView, - /* [in] */ IWebFrame *frame) + /* [in] */ IWebView *webView, + /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didClearWindowObject( - /* [in] */ IWebView*webView, - /* [in] */ JSContextRef context, - /* [in] */ JSObjectRef windowObject, - /* [in] */ IWebFrame* frame) + /* [in] */ IWebView*webView, + /* [in] */ JSContextRef context, + /* [in] */ JSObjectRef windowObject, + /* [in] */ IWebFrame* frame) { JSValueRef exception = 0; @@ -312,3 +340,9 @@ HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didHandleOnloadEventsForFrame( return S_OK; } +HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFirstVisuallyNonEmptyLayoutInFrame( + /* [in] */ IWebView *sender, + /* [in] */ IWebFrame *frame) +{ + return S_OK; +} diff --git a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h b/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h index 1a134fc..526e1b4 100644 --- a/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h +++ b/WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h @@ -35,7 +35,7 @@ class AccessibilityController; class GCController; -class FrameLoadDelegate : public IWebFrameLoadDelegate2, public IWebFrameLoadDelegatePrivate { +class FrameLoadDelegate : public IWebFrameLoadDelegate, public IWebFrameLoadDelegatePrivate { public: FrameLoadDelegate(); virtual ~FrameLoadDelegate(); @@ -54,7 +54,7 @@ public: virtual HRESULT STDMETHODCALLTYPE didReceiveServerRedirectForProvisionalLoadForFrame( /* [in] */ IWebView *webView, - /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } + /* [in] */ IWebFrame *frame); virtual HRESULT STDMETHODCALLTYPE didFailProvisionalLoadWithError( /* [in] */ IWebView *webView, @@ -93,11 +93,11 @@ public: /* [in] */ BSTR url, /* [in] */ double delaySeconds, /* [in] */ DATE fireDate, - /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } + /* [in] */ IWebFrame *frame); virtual HRESULT STDMETHODCALLTYPE didCancelClientRedirectForFrame( /* [in] */ IWebView *webView, - /* [in] */ IWebFrame *frame) { return E_NOTIMPL; } + /* [in] */ IWebFrame *frame); virtual HRESULT STDMETHODCALLTYPE willCloseFrame( /* [in] */ IWebView *webView, @@ -108,6 +108,12 @@ public: /* [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, @@ -121,12 +127,9 @@ public: /* [in] */ IWebView *sender, /* [in] */ IWebFrame *frame); - // IWebFrameLoadDelegate2 - virtual /* [local] */ HRESULT STDMETHODCALLTYPE didClearWindowObject( - /* [in] */ IWebView* webView, - /* [in] */ JSContextRef context, - /* [in] */ JSObjectRef windowObject, - /* [in] */ IWebFrame* frame); + virtual HRESULT STDMETHODCALLTYPE didFirstVisuallyNonEmptyLayoutInFrame( + /* [in] */ IWebView *sender, + /* [in] */ IWebFrame *frame); protected: void locationChangeDone(IWebError*, IWebFrame*); diff --git a/WebKitTools/DumpRenderTree/win/GCControllerWin.cpp b/WebKitTools/DumpRenderTree/win/GCControllerWin.cpp index 547aabc..b867250 100644 --- a/WebKitTools/DumpRenderTree/win/GCControllerWin.cpp +++ b/WebKitTools/DumpRenderTree/win/GCControllerWin.cpp @@ -32,11 +32,12 @@ #include "DumpRenderTree.h" #include <WebCore/COMPtr.h> #include <WebKit/WebKit.h> +#include <WebKit/WebKitCOMAPI.h> void GCController::collect() const { COMPtr<IWebJavaScriptCollector> collector; - if (FAILED(::CoCreateInstance(CLSID_WebJavaScriptCollector, 0, CLSCTX_ALL, IID_IWebJavaScriptCollector, (void**)&collector))) + if (FAILED(WebKitCreateInstance(CLSID_WebJavaScriptCollector, 0, IID_IWebJavaScriptCollector, (void**)&collector))) return; collector->collect(); } @@ -44,7 +45,7 @@ void GCController::collect() const void GCController::collectOnAlternateThread(bool waitUntilDone) const { COMPtr<IWebJavaScriptCollector> collector; - if (FAILED(::CoCreateInstance(CLSID_WebJavaScriptCollector, 0, CLSCTX_ALL, IID_IWebJavaScriptCollector, (void**)&collector))) + if (FAILED(WebKitCreateInstance(CLSID_WebJavaScriptCollector, 0, IID_IWebJavaScriptCollector, (void**)&collector))) return; collector->collectOnAlternateThread(waitUntilDone ? TRUE : FALSE); } @@ -52,7 +53,7 @@ void GCController::collectOnAlternateThread(bool waitUntilDone) const size_t GCController::getJSObjectCount() const { COMPtr<IWebJavaScriptCollector> collector; - if (FAILED(::CoCreateInstance(CLSID_WebJavaScriptCollector, 0, CLSCTX_ALL, IID_IWebJavaScriptCollector, (void**)&collector))) + if (FAILED(WebKitCreateInstance(CLSID_WebJavaScriptCollector, 0, IID_IWebJavaScriptCollector, (void**)&collector))) return 0; UINT objects = 0; collector->objectCount(&objects); diff --git a/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj b/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj index c045026..8d79717 100644 --- a/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj +++ b/WebKitTools/DumpRenderTree/win/ImageDiff.vcproj @@ -1,230 +1,230 @@ -<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="ImageDiff"
- ProjectGUID="{59CC0547-70AC-499C-9B19-EC01C6F61137}"
- RootNamespace="ImageDiff"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"
"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(WebKitOutputDir)\include";"$(WebKitOutputDir)\include\WebCore\ForwardingHeaders";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
- AdditionalLibraryDirectories=""
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if "$(ARCHIVE_BUILD)"=="" (if not "$(PRODUCTION)"=="" exit /b)

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops"
- CharacterSet="2"
- WholeProgramOptimization="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"
"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(WebKitOutputDir)\include";"$(WebKitOutputDir)\include\WebCore\ForwardingHeaders";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
- AdditionalLibraryDirectories=""
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if "$(ARCHIVE_BUILD)"=="" (if not "$(PRODUCTION)"=="" exit /b)

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
- />
- </Configuration>
- <Configuration
- Name="Debug_Internal|Win32"
- ConfigurationType="1"
- InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug_internal.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"
"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories=""$(WebKitOutputDir)\include";"$(WebKitOutputDir)\include\WebCore\ForwardingHeaders";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
- AdditionalLibraryDirectories=""
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if "$(ARCHIVE_BUILD)"=="" (if not "$(PRODUCTION)"=="" exit /b)

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath="..\cg\ImageDiffCG.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="ImageDiff" + ProjectGUID="{59CC0547-70AC-499C-9B19-EC01C6F61137}" + RootNamespace="ImageDiff" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + ConfigurationType="1" + InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"
" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories=""$(WebKitOutputDir)\include";"$(WebKitOutputDir)\include\private";"$(WebKitOutputDir)\include\WebCore\ForwardingHeaders";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\include\private";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility"" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib" + AdditionalLibraryDirectories="" + SubSystem="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
" + /> + </Configuration> + <Configuration + Name="Release|Win32" + ConfigurationType="1" + InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops" + CharacterSet="2" + WholeProgramOptimization="1" + > + <Tool + Name="VCPreBuildEventTool" + CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"
" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories=""$(WebKitOutputDir)\include";"$(WebKitOutputDir)\include\private";"$(WebKitOutputDir)\include\WebCore\ForwardingHeaders";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\include\private";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility"" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib" + AdditionalLibraryDirectories="" + SubSystem="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
" + /> + </Configuration> + <Configuration + Name="Debug_Internal|Win32" + ConfigurationType="1" + InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug.vsprops;$(WebKitLibrariesDir)\tools\vsprops\debug_internal.vsprops" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + CommandLine="set PATH=%SystemDrive%\cygwin\bin;%PATH%
if exist "$(WebKitOutputDir)\buildfailed" grep XX$(ProjectName)XX "$(WebKitOutputDir)\buildfailed"
if errorlevel 1 exit 1
echo XX$(ProjectName)XX > "$(WebKitOutputDir)\buildfailed"
" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories=""$(WebKitOutputDir)\include";"$(WebKitOutputDir)\include\private";"$(WebKitOutputDir)\include\WebCore\ForwardingHeaders";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\include\private";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\Include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility"" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLinkerTool" + AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib" + AdditionalLibraryDirectories="" + SubSystem="1" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + CommandLine="if exist "$(WebKitOutputDir)\buildfailed" del "$(WebKitOutputDir)\buildfailed"

mkdir 2>NUL "$(WebKitOutputDir)\bin"

if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)

if not exist "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" exit /b

xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreFoundation$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CoreFoundation.resources" "$(WebKitOutputDir)\bin\CoreFoundation.resources"
xcopy /y /d /e /i "$(WebKitLibrariesDir)\bin\CharacterSets" "$(WebKitOutputDir)\bin\CharacterSets"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\CoreGraphics$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38.dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icudt38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuin38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\icuuc38$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).dll" "$(WebKitOutputDir)\bin"
xcopy /y /d "$(WebKitLibrariesDir)\bin\zlib1$(LibraryConfigSuffix).pdb" "$(WebKitOutputDir)\bin"
" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <File + RelativePath="..\cg\ImageDiffCG.cpp" + > + </File> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp b/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp index 56d0a80..7a80bab 100644 --- a/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp +++ b/WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp @@ -43,6 +43,7 @@ #include <JavaScriptCore/JSRetainPtr.h> #include <JavaScriptCore/JSStringRefBSTR.h> #include <WebKit/WebKit.h> +#include <WebKit/WebKitCOMAPI.h> #include <string> #include <CoreFoundation/CoreFoundation.h> #include <shlwapi.h> @@ -120,6 +121,24 @@ JSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name) return 0; } +void LayoutTestController::disableImageLoading() +{ + COMPtr<IWebView> webView; + if (FAILED(frame->webView(&webView))) + return; + + COMPtr<IWebPreferences> preferences; + if (FAILED(webView->preferences(&preferences))) + return; + + preferences->setLoadsImagesAutomatically(FALSE); +} + +void LayoutTestController::dispatchPendingLoadRequests() +{ + // FIXME: Implement for testing fix for 6727495 +} + void LayoutTestController::display() { displayWebView(); @@ -127,21 +146,26 @@ void LayoutTestController::display() void LayoutTestController::keepWebHistory() { - COMPtr<IWebHistory> history(Create, CLSID_WebHistory); - if (!history) + COMPtr<IWebHistory> history; + if (FAILED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(history), reinterpret_cast<void**>(&history)))) return; - COMPtr<IWebHistory> sharedHistory(Create, CLSID_WebHistory); - if (!sharedHistory) + COMPtr<IWebHistory> sharedHistory; + if (FAILED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(sharedHistory), reinterpret_cast<void**>(&sharedHistory)))) return; history->setOptionalSharedHistory(sharedHistory.get()); } +void LayoutTestController::waitForPolicyDelegate() +{ + // FIXME: Implement this. +} + size_t LayoutTestController::webHistoryItemCount() { - COMPtr<IWebHistory> history(Create, CLSID_WebHistory); - if (!history) + COMPtr<IWebHistory> history; + if (FAILED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(history), reinterpret_cast<void**>(&history)))) return 0; COMPtr<IWebHistory> sharedHistory; @@ -180,18 +204,6 @@ JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSSt return JSStringCreateWithCharacters(localPath.c_str(), localPath.length()); } -void LayoutTestController::queueBackNavigation(int howFarBack) -{ - // Same as on mac. This can be shared. - WorkQueue::shared()->queue(new BackItem(howFarBack)); -} - -void LayoutTestController::queueForwardNavigation(int howFarForward) -{ - // Same as on mac. This can be shared. - WorkQueue::shared()->queue(new ForwardItem(howFarForward)); -} - static wstring jsStringRefToWString(JSStringRef jsStr) { size_t length = JSStringGetLength(jsStr); @@ -230,16 +242,6 @@ void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target) WorkQueue::shared()->queue(new LoadItem(jsAbsoluteURL.get(), target)); } -void LayoutTestController::queueReload() -{ - WorkQueue::shared()->queue(new ReloadItem); -} - -void LayoutTestController::queueScript(JSStringRef script) -{ - WorkQueue::shared()->queue(new ScriptItem(script)); -} - void LayoutTestController::setAcceptsEditing(bool acceptsEditing) { COMPtr<IWebView> webView; @@ -285,7 +287,7 @@ void LayoutTestController::setCustomPolicyDelegate(bool setDelegate, bool permis policyDelegate->setPermissive(permissive); webView->setPolicyDelegate(policyDelegate); } else - webView->setPolicyDelegate(NULL); + webView->setPolicyDelegate(0); } void LayoutTestController::setIconDatabaseEnabled(bool iconDatabaseEnabled) @@ -293,7 +295,7 @@ void LayoutTestController::setIconDatabaseEnabled(bool iconDatabaseEnabled) // See also <rdar://problem/6480108> COMPtr<IWebIconDatabase> iconDatabase; COMPtr<IWebIconDatabase> tmpIconDatabase; - if (FAILED(CoCreateInstance(CLSID_WebIconDatabase, 0, CLSCTX_ALL, IID_IWebIconDatabase, (void**)&tmpIconDatabase))) + if (FAILED(WebKitCreateInstance(CLSID_WebIconDatabase, 0, IID_IWebIconDatabase, (void**)&tmpIconDatabase))) return; if (FAILED(tmpIconDatabase->sharedIconDatabase(&iconDatabase))) return; @@ -319,7 +321,7 @@ void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled preferences->setPrivateBrowsingEnabled(privateBrowsingEnabled); } -void LayoutTestController::setPopupBlockingEnabled(bool privateBrowsingEnabled) +void LayoutTestController::setXSSAuditorEnabled(bool enabled) { COMPtr<IWebView> webView; if (FAILED(frame->webView(&webView))) @@ -329,7 +331,24 @@ void LayoutTestController::setPopupBlockingEnabled(bool privateBrowsingEnabled) if (FAILED(webView->preferences(&preferences))) return; - preferences->setJavaScriptCanOpenWindowsAutomatically(!privateBrowsingEnabled); + COMPtr<IWebPreferencesPrivate> prefsPrivate(Query, preferences); + if (!prefsPrivate) + return; + + prefsPrivate->setXSSAuditorEnabled(enabled); +} + +void LayoutTestController::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 LayoutTestController::setTabKeyCyclesThroughElements(bool shouldCycle) @@ -665,6 +684,11 @@ void LayoutTestController::execCommand(JSStringRef name, JSStringRef value) SysFreeString(valueBSTR); } +void LayoutTestController::setCacheModel(int) +{ + // FIXME: Implement +} + bool LayoutTestController::isCommandEnabled(JSStringRef /*name*/) { printf("ERROR: LayoutTestController::isCommandEnabled() not implemented\n"); @@ -673,7 +697,14 @@ bool LayoutTestController::isCommandEnabled(JSStringRef /*name*/) void LayoutTestController::clearAllDatabases() { - printf("ERROR: LayoutTestController::clearAllDatabases() not implemented\n"); + 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 LayoutTestController::setDatabaseQuota(unsigned long long quota) diff --git a/WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp b/WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp index 3c1cf95..b0c76d6 100644 --- a/WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp +++ b/WebKitTools/DumpRenderTree/win/PixelDumpSupportWin.cpp @@ -27,10 +27,20 @@ */ #include "config.h" + +#if PLATFORM(CG) #include "PixelDumpSupportCG.h" +#elif PLATFORM(CAIRO) +#include "PixelDumpSupportCairo.h" +#endif #include "DumpRenderTree.h" + +#if PLATFORM(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> @@ -60,9 +70,16 @@ PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool onscreen, bool inc GetObject(bitmap, sizeof(info), &info); ASSERT(info.bmBitsPixel == 32); +#if PLATFORM(CG) RetainPtr<CGColorSpaceRef> colorSpace(AdoptCF, CGColorSpaceCreateDeviceRGB()); CGContextRef context = CGBitmapContextCreate(info.bmBits, info.bmWidth, info.bmHeight, 8, info.bmWidthBytes, colorSpace.get(), kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst); +#elif PLATFORM(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); + return BitmapContext::createByAdoptingBitmapAndContext(bitmap, context); } diff --git a/WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp b/WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp index 4b6ab10..7d87c45 100644 --- a/WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp +++ b/WebKitTools/DumpRenderTree/win/PolicyDelegate.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -30,14 +30,34 @@ #include "PolicyDelegate.h" #include "DumpRenderTree.h" - +#include "LayoutTestController.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) { } @@ -79,6 +99,7 @@ HRESULT STDMETHODCALLTYPE PolicyDelegate::decidePolicyForNavigationAction( { BSTR url; request->URL(&url); + wstring wurl = urlSuitableForTestResult(wstring(url, SysStringLen(url))); int navType = 0; VARIANT var; @@ -87,31 +108,43 @@ HRESULT STDMETHODCALLTYPE PolicyDelegate::decidePolicyForNavigationAction( navType = V_I4(&var); } - const char* typeDescription; + LPCTSTR typeDescription; switch (navType) { case WebNavigationTypeLinkClicked: - typeDescription = "link clicked"; + typeDescription = TEXT("link clicked"); break; case WebNavigationTypeFormSubmitted: - typeDescription = "form submitted"; + typeDescription = TEXT("form submitted"); break; case WebNavigationTypeBackForward: - typeDescription = "back/forward"; + typeDescription = TEXT("back/forward"); break; case WebNavigationTypeReload: - typeDescription = "reload"; + typeDescription = TEXT("reload"); break; case WebNavigationTypeFormResubmitted: - typeDescription = "form resubmitted"; + typeDescription = TEXT("form resubmitted"); break; case WebNavigationTypeOther: - typeDescription = "other"; + typeDescription = TEXT("other"); break; default: - typeDescription = "illegal value"; + typeDescription = TEXT("illegal value"); } - - printf("Policy delegate: attempt to load %S with navigation type '%s'\n", url ? url : TEXT(""), typeDescription); + + 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); @@ -120,5 +153,35 @@ HRESULT STDMETHODCALLTYPE PolicyDelegate::decidePolicyForNavigationAction( 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/WebKitTools/DumpRenderTree/win/PolicyDelegate.h b/WebKitTools/DumpRenderTree/win/PolicyDelegate.h index 29574ee..c808dc9 100644 --- a/WebKitTools/DumpRenderTree/win/PolicyDelegate.h +++ b/WebKitTools/DumpRenderTree/win/PolicyDelegate.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -31,6 +31,8 @@ #include <WebKit/WebKit.h> +class LayoutTestController; + class PolicyDelegate : public IWebPolicyDelegate { public: PolicyDelegate(); @@ -65,14 +67,16 @@ public: virtual HRESULT STDMETHODCALLTYPE unableToImplementPolicyWithError( /* [in] */ IWebView *webView, /* [in] */ IWebError *error, - /* [in] */ IWebFrame *frame){ return E_NOTIMPL; } + /* [in] */ IWebFrame *frame); // PolicyDelegate void setPermissive(bool permissive) { m_permissiveDelegate = permissive; } + void setControllerToNotifyDone(LayoutTestController* controller) { m_controllerToNotifyDone = controller; } private: ULONG m_refCount; bool m_permissiveDelegate; + LayoutTestController* m_controllerToNotifyDone; }; #endif // PolicyDelegate_h diff --git a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp index 9c89614..06476e7 100644 --- a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp +++ b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp @@ -87,8 +87,15 @@ static wstring descriptionSuitableForTestResult(IWebURLRequest* request) 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">"; + return L"<NSURLRequest URL " + url + L", main document URL " + mainDocumentURL + L", http method " + httpMethod + L">"; } static wstring descriptionSuitableForTestResult(IWebURLResponse* response) @@ -103,7 +110,12 @@ static wstring descriptionSuitableForTestResult(IWebURLResponse* response) wstring url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR)); ::SysFreeString(urlBSTR); - return L"<NSURLResponse " + url + L">"; + 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">"; } static wstring descriptionSuitableForTestResult(IWebError* error, unsigned long identifier) @@ -228,11 +240,50 @@ HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::willSendRequest( descriptionSuitableForTestResult(redirectResponse).c_str()); } + if (!done && gLayoutTestController->willSendRequestReturnsNullOnRedirect() && redirectResponse) { + printf("Returning null for this redirect\n"); + *newRequest = 0; + return S_OK; + } + request->AddRef(); *newRequest = request; return S_OK; } +HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didReceiveResponse( + /* [in] */ IWebView* webView, + /* [in] */ unsigned long identifier, + /* [in] */ IWebURLResponse* response, + /* [in] */ IWebDataSource* dataSource) +{ + if (!done && gLayoutTestController->dumpResourceLoadCallbacks()) { + printf("%S - didReceiveResponse %S\n", + descriptionSuitableForTestResult(identifier).c_str(), + descriptionSuitableForTestResult(response).c_str()); + } + if (!done && gLayoutTestController->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 = urlSuitableForTestResult(wstringFromBSTR(urlBSTR)); + ::SysFreeString(urlBSTR); + + printf("%S has MIME type %S\n", url.c_str(), mimeType.c_str()); + } + + return S_OK; +} + + HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didFinishLoadingFromDataSource( /* [in] */ IWebView* webView, /* [in] */ unsigned long identifier, diff --git a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h index e259adc..c708147 100644 --- a/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h +++ b/WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.h @@ -72,7 +72,7 @@ public: /* [in] */ IWebView *webView, /* [in] */ unsigned long identifier, /* [in] */ IWebURLResponse *response, - /* [in] */ IWebDataSource *dataSource) { return E_NOTIMPL; } + /* [in] */ IWebDataSource *dataSource); virtual HRESULT STDMETHODCALLTYPE didReceiveContentLength( /* [in] */ IWebView *webView, diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def index 92cdb12..ac41e7e 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def +++ b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def @@ -1,4 +1,4 @@ -LIBRARY "TestNetscapePlugin"
+LIBRARY "npTestNetscapePlugin"
EXPORTS
NP_GetEntryPoints @1
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj index eced57e..5ccd6ce 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj +++ b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj @@ -41,6 +41,7 @@ Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders";"$(ProjectDir)..\..\TestNetscapePlugin.subproj";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
PreprocessorDefinitions="_USRDLL;TESTNETSCAPEPLUGIN_EXPORTS;snprintf=_snprintf"
+ DisableSpecificWarnings="4819"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -55,7 +56,7 @@ <Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix)\np$(ProjectName)$(WebKitConfigSuffix).dll"
- ModuleDefinitionFile="TestNetscapePlugin.def"
+ ModuleDefinitionFile="TestNetscapePlugin$(WebKitConfigSuffix).def"
/>
<Tool
Name="VCALinkTool"
@@ -110,6 +111,7 @@ Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders";"$(ProjectDir)..\..\TestNetscapePlugin.subproj";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
PreprocessorDefinitions="_USRDLL;TESTNETSCAPEPLUGIN_EXPORTS;snprintf=_snprintf"
+ DisableSpecificWarnings="4819"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -124,7 +126,7 @@ <Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix)\np$(ProjectName)$(WebKitConfigSuffix).dll"
- ModuleDefinitionFile="TestNetscapePlugin.def"
+ ModuleDefinitionFile="TestNetscapePlugin$(WebKitConfigSuffix).def"
/>
<Tool
Name="VCALinkTool"
@@ -179,6 +181,7 @@ AdditionalIncludeDirectories=""$(WebKitOutputDir)\Include";"$(WebKitOutputDir)\Include\JavaScriptCore";"$(WebKitOutputDir)\Include\WebCore\ForwardingHeaders";"$(ProjectDir)..\..\TestNetscapePlugin.subproj";"$(WebKitLibrariesDir)\include";"$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders";"$(WebKitLibrariesDir)\include\CoreFoundation\OSXCompatibilityHeaders\GNUCompatibility""
PreprocessorDefinitions="_USRDLL;TESTNETSCAPEPLUGIN_EXPORTS;snprintf=_snprintf"
RuntimeLibrary="3"
+ DisableSpecificWarnings="4819"
/>
<Tool
Name="VCManagedResourceCompilerTool"
@@ -193,7 +196,7 @@ <Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix)\np$(ProjectName)$(WebKitConfigSuffix).dll"
- ModuleDefinitionFile="TestNetscapePlugin.def"
+ ModuleDefinitionFile="TestNetscapePlugin$(WebKitConfigSuffix).def"
/>
<Tool
Name="VCALinkTool"
@@ -250,6 +253,10 @@ >
</File>
<File
+ RelativePath=".\TestNetscapePlugin_debug.def"
+ >
+ </File>
+ <File
RelativePath="..\..\TestNetscapePlugIn.subproj\TestObject.cpp"
>
</File>
diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin_debug.def b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin_debug.def new file mode 100644 index 0000000..158fb7c --- /dev/null +++ b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin_debug.def @@ -0,0 +1,6 @@ +LIBRARY "npTestNetscapePlugin_debug" + +EXPORTS + NP_GetEntryPoints @1 + NP_Initialize @2 + NP_Shutdown @3 diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.c b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.c deleted file mode 100644 index 829a32c..0000000 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (C) 2007 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "PluginObject.h" - -#include <stdio.h> - -extern "C" -NPError __stdcall NP_Initialize(NPNetscapeFuncs* browserFuncs) -{ - browser = browserFuncs; - return NPERR_NO_ERROR; -} - -extern "C" -NPError __stdcall NP_GetEntryPoints(NPPluginFuncs* pluginFuncs) -{ - pluginFuncs->version = 11; - pluginFuncs->size = sizeof(pluginFuncs); - pluginFuncs->newp = NPP_New; - pluginFuncs->destroy = NPP_Destroy; - pluginFuncs->setwindow = NPP_SetWindow; - pluginFuncs->newstream = NPP_NewStream; - pluginFuncs->destroystream = NPP_DestroyStream; - pluginFuncs->asfile = NPP_StreamAsFile; - pluginFuncs->writeready = NPP_WriteReady; - pluginFuncs->write = (NPP_WriteProcPtr)NPP_Write; - pluginFuncs->print = NPP_Print; - pluginFuncs->event = NPP_HandleEvent; - pluginFuncs->urlnotify = NPP_URLNotify; - pluginFuncs->getvalue = NPP_GetValue; - pluginFuncs->setvalue = NPP_SetValue; - - return NPERR_NO_ERROR; -} - - -extern "C" -NPError __stdcall NP_Shutdown() -{ - return NPERR_NO_ERROR; -} - - -NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, char *argn[], char *argv[], NPSavedData *saved) -{ - if (browser->version >= 14) { - PluginObject* obj = (PluginObject*)browser->createobject(instance, getPluginClass()); - - obj->onStreamLoad = NULL; - - for (int16 i = 0; i < argc; i++) { - if (_stricmp(argn[i], "onstreamload") == 0 && !obj->onStreamLoad) - obj->onStreamLoad = _strdup(argv[i]); - } - - instance->pdata = obj; - } - - return NPERR_NO_ERROR; -} - -NPError NPP_Destroy(NPP instance, NPSavedData **save) -{ - PluginObject *obj = (PluginObject*)instance->pdata; - if (obj) { - if (obj->onStreamLoad) - free(obj->onStreamLoad); - - if (obj->logDestroy) - printf("PLUGIN: NPP_Destroy\n"); - - browser->releaseobject(&obj->header); - } - return NPERR_NO_ERROR; -} - -NPError NPP_SetWindow(NPP instance, NPWindow *window) -{ - return NPERR_NO_ERROR; -} - -NPError NPP_NewStream(NPP instance, NPMIMEType type, NPStream *stream, NPBool seekable, uint16 *stype) -{ - PluginObject* obj = (PluginObject*)instance->pdata; - obj->stream = stream; - *stype = NP_ASFILEONLY; - - if (obj->onStreamLoad) { - NPObject *windowScriptObject; - browser->getvalue(obj->npp, NPNVWindowNPObject, &windowScriptObject); - - NPString script; - script.UTF8Characters = obj->onStreamLoad; - script.UTF8Length = strlen(obj->onStreamLoad); - - NPVariant browserResult; - browser->evaluate(obj->npp, windowScriptObject, &script, &browserResult); - browser->releasevariantvalue(&browserResult); - } - - return NPERR_NO_ERROR; -} - -NPError NPP_DestroyStream(NPP instance, NPStream *stream, NPReason reason) -{ - return NPERR_NO_ERROR; -} - -int32 NPP_WriteReady(NPP instance, NPStream *stream) -{ - return 0; -} - -int32 NPP_Write(NPP instance, NPStream *stream, int32 offset, int32 len, void *buffer) -{ - return 0; -} - -void NPP_StreamAsFile(NPP instance, NPStream *stream, const char *fname) -{ -} - -void NPP_Print(NPP instance, NPPrint *platformPrint) -{ -} - -int16 NPP_HandleEvent(NPP instance, void *event) -{ - PluginObject *obj = (PluginObject*)instance->pdata; - if (!obj->eventLogging) - return 0; - - // FIXME: Implement this - return 0; -} - -void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyData) -{ - PluginObject *obj = (PluginObject*)instance->pdata; - - handleCallback(obj, url, reason, notifyData); -} - -NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value) -{ - if (variable == NPPVpluginScriptableNPObject) { - void **v = (void **)value; - PluginObject *obj = (PluginObject*)instance->pdata; - // Return value is expected to be retained - browser->retainobject((NPObject *)obj); - *v = obj; - return NPERR_NO_ERROR; - } - return NPERR_GENERIC_ERROR; -} - -NPError NPP_SetValue(NPP instance, NPNVariable variable, void *value) -{ - return NPERR_GENERIC_ERROR; -} diff --git a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp index ab54872..7175d33 100644 --- a/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp +++ b/WebKitTools/DumpRenderTree/win/TestNetscapePlugin/main.cpp @@ -84,6 +84,11 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc, ch obj->onStreamDestroy = _strdup(argv[i]); else if (_stricmp(argn[i], "onURLNotify") == 0 && !obj->onURLNotify) obj->onURLNotify = _strdup(argv[i]); + else if (_stricmp(argn[i], "logSrc") == 0) { + for (int i = 0; i < argc; i++) + if (_stricmp(argn[i], "src") == 0) + pluginLog(instance, "src: %s", argv[i]); + } } instance->pdata = obj; diff --git a/WebKitTools/DumpRenderTree/win/UIDelegate.cpp b/WebKitTools/DumpRenderTree/win/UIDelegate.cpp index a2532a5..63f5441 100755 --- a/WebKitTools/DumpRenderTree/win/UIDelegate.cpp +++ b/WebKitTools/DumpRenderTree/win/UIDelegate.cpp @@ -176,10 +176,6 @@ HRESULT STDMETHODCALLTYPE UIDelegate::QueryInterface(REFIID riid, void** ppvObje *ppvObject = static_cast<IWebUIDelegate*>(this); else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate)) *ppvObject = static_cast<IWebUIDelegatePrivate*>(this); - else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate2)) - *ppvObject = static_cast<IWebUIDelegatePrivate2*>(this); - else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate3)) - *ppvObject = static_cast<IWebUIDelegatePrivate3*>(this); else return E_NOINTERFACE; @@ -274,6 +270,142 @@ HRESULT STDMETHODCALLTYPE UIDelegate::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) @@ -435,6 +567,36 @@ HRESULT STDMETHODCALLTYPE UIDelegate::exceededDatabaseQuota( 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) { diff --git a/WebKitTools/DumpRenderTree/win/UIDelegate.h b/WebKitTools/DumpRenderTree/win/UIDelegate.h index 2113957..853031f 100755 --- a/WebKitTools/DumpRenderTree/win/UIDelegate.h +++ b/WebKitTools/DumpRenderTree/win/UIDelegate.h @@ -35,7 +35,7 @@ class DRTUndoManager; -class UIDelegate : public IWebUIDelegate, IWebUIDelegatePrivate3 { +class UIDelegate : public IWebUIDelegate, IWebUIDelegatePrivate { public: UIDelegate(); @@ -186,7 +186,8 @@ public: /* [in] */ IWebView *webView, /* [in] */ WebDragSourceAction action, /* [in] */ LPPOINT point, - /* [in] */ IDataObject *pasteboard) { return E_NOTIMPL; } + /* [in] */ IDataObject *pasteboard, + /* [retval][out] */ IDataObject **newPasteboard) { return E_NOTIMPL; } virtual HRESULT STDMETHODCALLTYPE contextMenuItemSelected( /* [in] */ IWebView *sender, @@ -247,6 +248,81 @@ public: 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); + protected: // IWebUIDelegatePrivate @@ -298,19 +374,31 @@ protected: /* [in] */ UINT keyCode, /* [retval][out] */ LONG_PTR *code); - // IWebUIDelegatePrivate2 - virtual HRESULT STDMETHODCALLTYPE webViewPainted( /* [in] */ IWebView *sender); - // IWebUIDelegatePrivate3 - virtual HRESULT STDMETHODCALLTYPE exceededDatabaseQuota( /* [in] */ IWebView *sender, /* [in] */ IWebFrame *frame, /* [in] */ IWebSecurityOrigin *origin, /* [in] */ BSTR databaseIdentifier); + 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); + ULONG m_refCount; private: diff --git a/WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp b/WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp index a489498..7c60d3d 100644 --- a/WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp +++ b/WebKitTools/DumpRenderTree/win/WorkQueueItemWin.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -32,6 +32,7 @@ #include "DumpRenderTree.h" #include <WebCore/COMPtr.h> #include <WebKit/WebKit.h> +#include <WebKit/WebKitCOMAPI.h> #include <JavaScriptCore/JSStringRef.h> #include <JavaScriptCore/JSStringRefCF.h> #include <JavaScriptCore/RetainPtr.h> @@ -50,9 +51,9 @@ static wstring jsStringRefToWString(JSStringRef jsStr) return buffer.data(); } -void LoadItem::invoke() const +bool LoadItem::invoke() const { - wstring targetString = jsStringRefToWString(target()); + wstring targetString = jsStringRefToWString(m_target.get()); COMPtr<IWebFrame> targetFrame; if (targetString.empty()) @@ -62,73 +63,80 @@ void LoadItem::invoke() const bool failed = FAILED(frame->findFrameNamed(targetBSTR, &targetFrame)); SysFreeString(targetBSTR); if (failed) - return; + return false; } COMPtr<IWebURLRequest> request; - if (FAILED(CoCreateInstance(CLSID_WebURLRequest, 0, CLSCTX_ALL, IID_IWebURLRequest, (void**)&request))) - return; + if (FAILED(WebKitCreateInstance(CLSID_WebURLRequest, 0, IID_IWebURLRequest, (void**)&request))) + return false; - wstring urlString = jsStringRefToWString(url()); + 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; + return false; targetFrame->loadRequest(request.get()); + return true; } -void ReloadItem::invoke() const +bool ReloadItem::invoke() const { COMPtr<IWebView> webView; if (FAILED(frame->webView(&webView))) - return; + return false; COMPtr<IWebIBActions> webActions; - if (SUCCEEDED(webView->QueryInterface(&webActions))) - webActions->reload(0); + if (FAILED(webView->QueryInterface(&webActions))) + return false; + + webActions->reload(0); + return true; } -void ScriptItem::invoke() const +bool ScriptItem::invoke() const { COMPtr<IWebView> webView; if (FAILED(frame->webView(&webView))) - return; + return false; - wstring scriptString = jsStringRefToWString(script()); + wstring scriptString = jsStringRefToWString(m_script.get()); BSTR result; BSTR scriptBSTR = SysAllocString(scriptString.c_str()); webView->stringByEvaluatingJavaScriptFromString(scriptBSTR, &result); SysFreeString(result); SysFreeString(scriptBSTR); + + return true; } -void BackForwardItem::invoke() const +bool BackForwardItem::invoke() const { COMPtr<IWebView> webView; if (FAILED(frame->webView(&webView))) - return; + return false; BOOL result; if (m_howFar == 1) { webView->goForward(&result); - return; + return true; } if (m_howFar == -1) { webView->goBack(&result); - return; + return true; } COMPtr<IWebBackForwardList> bfList; if (FAILED(webView->backForwardList(&bfList))) - return; + return false; COMPtr<IWebHistoryItem> item; if (FAILED(bfList->itemAtIndex(m_howFar, &item))) - return; + return false; webView->goToBackForwardItem(item.get(), &result); + return true; } diff --git a/WebKitTools/DumpRenderTree/wx/DumpRenderTree.bkl b/WebKitTools/DumpRenderTree/wx/DumpRenderTree.bkl new file mode 100644 index 0000000..22fe1f9 --- /dev/null +++ b/WebKitTools/DumpRenderTree/wx/DumpRenderTree.bkl @@ -0,0 +1,69 @@ +<?xml version="1.0" ?> +<!-- +Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + its contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +wxWebKit sample application build file +--> + +<makefile> + <set var="WX_UNICODE">1</set> + <set var="WX_SHARED">1</set> + + <include file="../../../WebKit/wx/wxwk-settings.bkl"/> + + <!-- the WX_PYTHON option was added to presets/wx.bkl in 2.8.5, so define + it in case the presets/wx.bkl doesn't define it for us. --> + <if cond="not isdefined('WX_PYTHON')"> + <set var="WX_PYTHON">0</set> + </if> + <template id="wxwebkit"> + <lib-path>$(WKOUTPUTDIR)</lib-path> + <sys-lib>wxwebkit</sys-lib> + </template> + <exe id="DumpRenderTree" template="wxwk,xml2,iconv,xslt,icu,jscore,webcore,wxwebkit,curl,pthreads"> + <app-type>gui</app-type> + <runtime-libs>dynamic</runtime-libs> + + <include>$(WK_ROOT)/WebCore/platform/wx</include> + <include>$(WK_ROOT)/WebCore/bridge/wx</include> + <include>$(WK_ROOT)/WebCore/page/wx</include> + <include>$(WK_ROOT)/WebKit/wx</include> + <include>$(WK_ROOT)/WebKit/wx/WebKitSupport</include> + <include>$(WK_ROOT)/WebKitTools/DumpRenderTree</include> + <include>$(WK_ROOT)/WebKitTools/DumpRenderTree/wx</include> + <include>$(WK_ROOT)/WebKitBuild/Debug</include> + <sources> + DumpRenderTreeWx.cpp + LayoutTestControllerWx.cpp + WorkQueueItemWx.cpp + ../LayoutTestController.cpp + ../WorkQueue.cpp + </sources> + + </exe> + +</makefile> diff --git a/WebKitTools/DumpRenderTree/wx/DumpRenderTreeWx.cpp b/WebKitTools/DumpRenderTree/wx/DumpRenderTreeWx.cpp new file mode 100644 index 0000000..f905786 --- /dev/null +++ b/WebKitTools/DumpRenderTree/wx/DumpRenderTreeWx.cpp @@ -0,0 +1,345 @@ +/* + * Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "DumpRenderTree.h" + +#include "LayoutTestController.h" +#include "WorkQueue.h" +#include "WorkQueueItem.h" + +#include <JavaScriptCore/JavaScript.h> + +#include <wx/wx.h> +#include "WebView.h" +#include "WebFrame.h" +#include "WebBrowserShell.h" + +#include <wtf/Assertions.h> + +#include <cassert> +#include <stdlib.h> +#include <string.h> +#include <time.h> + +volatile bool done = true; +volatile bool notified = false; +static bool printSeparators = true; +static int dumpPixels; +static int dumpTree = 1; +time_t startTime; // to detect timeouts / failed tests + +using namespace std; + +FILE* logOutput; + +LayoutTestController* gLayoutTestController = 0; +static wxWebView* webView; +static wxTimer* idleTimer; + +const unsigned timeOut = 10; +const unsigned maxViewHeight = 600; +const unsigned maxViewWidth = 800; + +class LayoutWebViewEventHandler : public wxEvtHandler { + +public: + LayoutWebViewEventHandler(wxWebView* webView) + : m_webView(webView) + { + } + + void bindEvents() + { + m_webView->Connect(wxEVT_WEBVIEW_LOAD, wxWebViewLoadEventHandler(LayoutWebViewEventHandler::OnLoadEvent), NULL, this); + m_webView->Connect(wxEVT_WEBVIEW_JS_ALERT, wxWebViewAlertEventHandler(LayoutWebViewEventHandler::OnAlertEvent), NULL, this); + m_webView->Connect(wxEVT_WEBVIEW_JS_CONFIRM, wxWebViewConfirmEventHandler(LayoutWebViewEventHandler::OnConfirmEvent), NULL, this); + m_webView->Connect(wxEVT_WEBVIEW_JS_PROMPT, wxWebViewPromptEventHandler(LayoutWebViewEventHandler::OnPromptEvent), NULL, this); + m_webView->Connect(wxEVT_WEBVIEW_CONSOLE_MESSAGE, wxWebViewConsoleMessageEventHandler(LayoutWebViewEventHandler::OnConsoleMessageEvent), NULL, this); + m_webView->Connect(wxEVT_WEBVIEW_RECEIVED_TITLE, wxWebViewReceivedTitleEventHandler(LayoutWebViewEventHandler::OnReceivedTitleEvent), NULL, this); + m_webView->Connect(wxEVT_WEBVIEW_WINDOW_OBJECT_CLEARED, wxWebViewWindowObjectClearedEventHandler(LayoutWebViewEventHandler::OnWindowObjectClearedEvent), NULL, this); + } + + void OnLoadEvent(wxWebViewLoadEvent& event) + { + + if (event.GetState() == wxWEBVIEW_LOAD_FAILED || event.GetState() == wxWEBVIEW_LOAD_STOPPED) + done = true; + + if (event.GetState() == wxWEBVIEW_LOAD_ONLOAD_HANDLED) { + done = true; + + if (!gLayoutTestController->waitToDump() || notified) { + dump(); + } + } + } + + void OnAlertEvent(wxWebViewAlertEvent& event) + { + fprintf(stdout, "ALERT: %S\n", event.GetMessage().c_str()); + } + + void OnConfirmEvent(wxWebViewConfirmEvent& event) + { + fprintf(stdout, "CONFIRM: %S\n", event.GetMessage().c_str()); + event.SetReturnCode(1); + } + + void OnPromptEvent(wxWebViewPromptEvent& event) + { + fprintf(stdout, "PROMPT: %S, default text: %S\n", event.GetMessage().c_str(), event.GetResponse().c_str()); + event.SetReturnCode(1); + } + + void OnConsoleMessageEvent(wxWebViewConsoleMessageEvent& event) + { + fprintf(stdout, "CONSOLE MESSAGE: line %d: %S\n", event.GetLineNumber(), event.GetMessage().c_str()); + } + + void OnReceivedTitleEvent(wxWebViewReceivedTitleEvent& event) + { + if (gLayoutTestController->dumpTitleChanges() && !done) { + const char* title = event.GetTitle().mb_str(wxConvUTF8); + printf("TITLE CHANGED: %S\n", title ? title : ""); + } + } + + void OnWindowObjectClearedEvent(wxWebViewWindowObjectClearedEvent& event) + { + JSValueRef exception = 0; + gLayoutTestController->makeWindowObject(event.GetJSContext(), event.GetWindowObject(), &exception); + } + +private: + wxWebView* m_webView; + +}; + +void notifyDoneFired() +{ + notified = true; + if (done) + dump(); +} + +LayoutWebViewEventHandler* eventHandler = NULL; + +static wxString dumpFramesAsText(wxWebFrame* frame) +{ + // TODO: implement this. leaving this here so we don't forget this case. + if (gLayoutTestController->dumpChildFramesAsText()) { + } + + return frame->GetInnerText(); +} + +void dump() +{ + if (!done) + return; + + if (gLayoutTestController->waitToDump() && !notified) + return; + + if (dumpTree) { + const char* result = 0; + + bool dumpAsText = gLayoutTestController->dumpAsText(); + wxString str; + if (gLayoutTestController->dumpAsText()) + str = dumpFramesAsText(webView->GetMainFrame()); + else + str = webView->GetMainFrame()->GetExternalRepresentation(); + + result = str.ToUTF8(); + if (!result) { + const char* errorMessage; + if (gLayoutTestController->dumpAsText()) + errorMessage = "WebFrame::GetInnerText"; + else + errorMessage = "WebFrame::GetExternalRepresentation"; + printf("ERROR: NULL result from %s", errorMessage); + } else { + printf("%s\n", result); + } + + if (gLayoutTestController->dumpBackForwardList()) { + // FIXME: not implemented + } + + if (printSeparators) { + puts("#EOF"); + fputs("#EOF\n", stderr); + fflush(stdout); + fflush(stderr); + } + } + + if (dumpPixels) { + if (!gLayoutTestController->dumpAsText() && + !gLayoutTestController->dumpDOMAsWebArchive() && + !gLayoutTestController->dumpSourceAsWebArchive()) { + // FIXME: Add support for dumping pixels + } + + fflush(stdout); + } + + puts("#EOF"); + fflush(stdout); + fflush(stderr); + + gLayoutTestController->deref(); + gLayoutTestController = 0; +} + +static void runTest(const wxString testPathOrURL) +{ + done = false; + time(&startTime); + string pathOrURLString(testPathOrURL.char_str()); + string pathOrURL(pathOrURLString); + string expectedPixelHash; + + size_t separatorPos = pathOrURL.find("'"); + if (separatorPos != string::npos) { + pathOrURL = string(pathOrURLString, 0, separatorPos); + expectedPixelHash = string(pathOrURLString, separatorPos + 1); + } + + // CURL isn't happy if we don't have a protocol. + size_t http = pathOrURL.find("http://"); + if (http == string::npos) + pathOrURL.insert(0, "file://"); + + gLayoutTestController = new LayoutTestController(pathOrURL, expectedPixelHash); + if (!gLayoutTestController) { + wxTheApp->ExitMainLoop(); + } + + WorkQueue::shared()->clear(); + WorkQueue::shared()->setFrozen(false); + + webView->LoadURL(wxString(pathOrURL.c_str(), wxConvUTF8)); + + // wait until load completes and the results are dumped + while (!done) + wxSafeYield(); +} + +class MyApp : public wxApp +{ +public: + + virtual bool OnInit(); + +private: + wxLog* logger; +}; + + +IMPLEMENT_APP(MyApp) + +bool MyApp::OnInit() +{ + logOutput = fopen("output.txt", "ab"); + if (logOutput) { + logger = new wxLogStderr(logOutput); + wxLog::SetActiveTarget(logger); + } + + wxLogMessage(wxT("Starting DumpRenderTool, %d args.\n"), argc); + + for (int i = 1; i < argc; ++i) { + wxString option = wxString(argv[i]); + if (!option.CmpNoCase(_T("--notree"))) { + dumpTree = false; + continue; + } + + if (!option.CmpNoCase(_T("--pixel-tests"))) { + dumpPixels = true; + continue; + } + + if (!option.CmpNoCase(_T("--tree"))) { + dumpTree = true; + continue; + } + } + wxInitAllImageHandlers(); + + // create the main application window + wxWebBrowserShell* webFrame = new wxWebBrowserShell(_T("wxWebKit DumpRenderTree App")); + SetTopWindow(webFrame); + webView = webFrame->webview; + webView->SetSize(wxSize(maxViewWidth, maxViewHeight)); + + if (!eventHandler) { + eventHandler = new LayoutWebViewEventHandler(webView); + eventHandler->bindEvents(); + } + + int optind = 1; + time(&startTime); + wxString option_str = wxString(argv[optind]); + if (argc == optind+1 && option_str.Find(_T("-")) == 0) { + char filenameBuffer[2048]; + while (fgets(filenameBuffer, sizeof(filenameBuffer), stdin)) { + wxString filename = wxString::FromUTF8(filenameBuffer); + char* newLineCharacter = strchr(filenameBuffer, '\n'); + if (newLineCharacter) + *newLineCharacter = '\0'; + + if (strlen(filenameBuffer) == 0) + return 0; + wxLogMessage(wxT("Running test %S.\n"), filenameBuffer); + runTest(filename); + } + + } else { + printSeparators = (optind < argc-1 || (dumpPixels && dumpTree)); + for (int i = optind; i != argc; ++i) { + runTest(wxTheApp->argv[1]); + } + } + + webFrame->Close(); + delete eventHandler; + + wxLog::SetActiveTarget(NULL); + delete logger; + fclose(logOutput); + + delete gLayoutTestController; + gLayoutTestController = 0; + + // returning false shuts the app down + return false; +} diff --git a/WebKitTools/DumpRenderTree/wx/DumpRenderTreeWx.h b/WebKitTools/DumpRenderTree/wx/DumpRenderTreeWx.h new file mode 100644 index 0000000..99092b8 --- /dev/null +++ b/WebKitTools/DumpRenderTree/wx/DumpRenderTreeWx.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef DumpRenderTreeWx_h +#define DumpRenderTreeWx_h + +extern void notifyDoneFired(); + +#endif // DumpRenderTreeWx_h diff --git a/WebKitTools/DumpRenderTree/wx/GCControllerWx.cpp b/WebKitTools/DumpRenderTree/wx/GCControllerWx.cpp new file mode 100644 index 0000000..bddf62f --- /dev/null +++ b/WebKitTools/DumpRenderTree/wx/GCControllerWx.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "GCController.h" + +void GCController::collect() const +{ +} + +void GCController::collectOnAlternateThread(bool waitUntilDone) const +{ +} + +size_t GCController::getJSObjectCount() const +{ + return 0; +} diff --git a/WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp b/WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp new file mode 100644 index 0000000..fa7e541 --- /dev/null +++ b/WebKitTools/DumpRenderTree/wx/LayoutTestControllerWx.cpp @@ -0,0 +1,262 @@ +/* + * Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "LayoutTestController.h" + +#include "DumpRenderTree.h" +#include "WorkQueue.h" +#include "WorkQueueItem.h" +#include <JavaScriptCore/JSRetainPtr.h> +#include <JavaScriptCore/JSStringRef.h> + + + +LayoutTestController::~LayoutTestController() +{ + // FIXME: implement +} + +void LayoutTestController::addDisallowedURL(JSStringRef url) +{ + // FIXME: implement +} + +void LayoutTestController::clearBackForwardList() +{ +} + +JSStringRef LayoutTestController::copyDecodedHostName(JSStringRef name) +{ + // FIXME: implement + return 0; +} + +JSStringRef LayoutTestController::copyEncodedHostName(JSStringRef name) +{ + // FIXME: implement + return 0; +} + +void LayoutTestController::dispatchPendingLoadRequests() +{ + // FIXME: Implement for testing fix for 6727495 +} + +void LayoutTestController::display() +{ +} + +void LayoutTestController::keepWebHistory() +{ + // FIXME: implement +} + +void LayoutTestController::notifyDone() +{ + if (m_waitToDump && !WorkQueue::shared()->count()) + notifyDoneFired(); + m_waitToDump = false; +} + +JSStringRef LayoutTestController::pathToLocalResource(JSContextRef context, JSStringRef url) +{ + // Function introduced in r28690. This may need special-casing on Windows. + return JSStringRetain(url); // Do nothing on Unix. +} + +void LayoutTestController::queueLoad(JSStringRef url, JSStringRef target) +{ + // FIXME: We need to resolve relative URLs here + WorkQueue::shared()->queue(new LoadItem(url, target)); +} + +void LayoutTestController::setAcceptsEditing(bool acceptsEditing) +{ +} + +void LayoutTestController::setCustomPolicyDelegate(bool, bool) +{ + // FIXME: implement +} + +void LayoutTestController::setMainFrameIsFirstResponder(bool flag) +{ + // FIXME: implement +} + +void LayoutTestController::setTabKeyCyclesThroughElements(bool cycles) +{ + // FIXME: implement +} + +void LayoutTestController::setUseDashboardCompatibilityMode(bool flag) +{ + // FIXME: implement +} + +void LayoutTestController::setUserStyleSheetEnabled(bool flag) +{ +} + +void LayoutTestController::setUserStyleSheetLocation(JSStringRef path) +{ +} + +void LayoutTestController::setWindowIsKey(bool windowIsKey) +{ + // FIXME: implement +} + +void LayoutTestController::setSmartInsertDeleteEnabled(bool flag) +{ + // FIXME: implement +} + +void LayoutTestController::setJavaScriptProfilingEnabled(bool flag) +{ +} + +void LayoutTestController::setWaitToDump(bool waitUntilDone) +{ + static const int timeoutSeconds = 10; + + m_waitToDump = waitUntilDone; +} + +int LayoutTestController::windowCount() +{ + // FIXME: implement + return 1; +} + +void LayoutTestController::setPrivateBrowsingEnabled(bool privateBrowsingEnabled) +{ + // FIXME: implement +} + +void LayoutTestController::setXSSAuditorEnabled(bool enabled) +{ + // FIXME: implement +} + +void LayoutTestController::setAuthorAndUserStylesEnabled(bool flag) +{ + // FIXME: implement +} + +void LayoutTestController::setPopupBlockingEnabled(bool popupBlockingEnabled) +{ + // FIXME: implement +} + +bool LayoutTestController::elementDoesAutoCompleteForElementWithId(JSStringRef id) +{ + // FIXME: implement + return false; +} + +void LayoutTestController::execCommand(JSStringRef name, JSStringRef value) +{ + // FIXME: implement +} + +void LayoutTestController::setPersistentUserStyleSheetLocation(JSStringRef jsURL) +{ + // FIXME: implement +} + +void LayoutTestController::clearPersistentUserStyleSheet() +{ + // FIXME: implement +} + +void LayoutTestController::clearAllDatabases() +{ + // FIXME: implement +} + +void LayoutTestController::setDatabaseQuota(unsigned long long quota) +{ + // FIXME: implement +} + +void LayoutTestController::setAppCacheMaximumSize(unsigned long long size) +{ + // FIXME: implement +} + +unsigned LayoutTestController::numberOfActiveAnimations() const +{ + // FIXME: implement + return 0; +} + +void LayoutTestController::setSelectTrailingWhitespaceEnabled(bool flag) +{ + // FIXME: implement +} + +bool LayoutTestController::pauseTransitionAtTimeOnElementWithId(JSStringRef propertyName, double time, JSStringRef elementId) +{ + // FIXME: implement + return false; +} + +void LayoutTestController::setIconDatabaseEnabled(bool iconDatabaseEnabled) +{ + // FIXME: implement +} + +bool LayoutTestController::pauseAnimationAtTimeOnElementWithId(JSStringRef animationName, double time, JSStringRef elementId) +{ + // FIXME: implement + return false; +} + +void LayoutTestController::setCacheModel(int) +{ + // FIXME: implement +} + +bool LayoutTestController::isCommandEnabled(JSStringRef /*name*/) +{ + // FIXME: implement + return false; +} + +size_t LayoutTestController::webHistoryItemCount() +{ + // FIXME: implement + return 0; +} + +void LayoutTestController::waitForPolicyDelegate() +{ + // FIXME: Implement this. +} diff --git a/WebKitTools/DumpRenderTree/wx/WorkQueueItemWx.cpp b/WebKitTools/DumpRenderTree/wx/WorkQueueItemWx.cpp new file mode 100644 index 0000000..3e8da19 --- /dev/null +++ b/WebKitTools/DumpRenderTree/wx/WorkQueueItemWx.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WorkQueueItem.h" + +#include "DumpRenderTree.h" + +bool LoadItem::invoke() const +{ + return false; +} + +bool ReloadItem::invoke() const +{ + return false; +} + +bool ScriptItem::invoke() const +{ + return false; +} + +bool BackForwardItem::invoke() const +{ + return false; +} diff --git a/WebKitTools/FindSafari/FindSafari.cpp b/WebKitTools/FindSafari/FindSafari.cpp index 616323b..c3d149f 100644 --- a/WebKitTools/FindSafari/FindSafari.cpp +++ b/WebKitTools/FindSafari/FindSafari.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007 Apple Inc. All rights reserved. + * 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 @@ -49,7 +49,7 @@ static TCHAR* getStringValue(HKEY key, LPCTSTR valueName) return 0; TCHAR* buffer = (TCHAR*)malloc(bufferSize); - if (RegQueryValueEx(key, 0, 0, &type, reinterpret_cast<LPBYTE>(buffer), &bufferSize) != ERROR_SUCCESS) { + if (RegQueryValueEx(key, valueName, 0, &type, reinterpret_cast<LPBYTE>(buffer), &bufferSize) != ERROR_SUCCESS) { free(buffer); return 0; } @@ -57,127 +57,27 @@ static TCHAR* getStringValue(HKEY key, LPCTSTR valueName) return buffer; } -static LPOLESTR getWebViewCLSID() -{ - LPCTSTR webViewProgID = TEXT("WebKit.WebView"); - - CLSID clsid = CLSID_NULL; - HRESULT hr = CLSIDFromProgID(webViewProgID, &clsid); - if (FAILED(hr)) { - LOG_WARNING(TEXT("Failed to get CLSID for %s\n"), webViewProgID); - return 0; - } - - LPOLESTR clsidString = 0; - if (FAILED(StringFromCLSID(clsid, &clsidString))) { - LOG_WARNING(TEXT("Failed to get string representation of CLSID for WebView\n")); - return 0; - } - - return clsidString; -} - static TCHAR* getInstalledWebKitDirectory() { - LPCTSTR keyPrefix = TEXT("SOFTWARE\\Classes\\CLSID\\"); - LPCTSTR keySuffix = TEXT("\\InprocServer32"); - - LPOLESTR clsid = getWebViewCLSID(); - if (!clsid) - return 0; - - size_t keyBufferLength = _tcslen(keyPrefix) + _tcslen(clsid) + _tcslen(keySuffix) + 1; - TCHAR* keyString = (TCHAR*)malloc(keyBufferLength * sizeof(TCHAR)); - - int ret = _sntprintf_s(keyString, keyBufferLength, keyBufferLength - 1, TEXT("%s%s%s"), keyPrefix, clsid, keySuffix); - CoTaskMemFree(clsid); - if (ret == -1) { - LOG_WARNING(TEXT("Failed to construct InprocServer32 key\n")); - return 0; - } - - HKEY serverKey = 0; - LONG error = RegOpenKeyEx(HKEY_LOCAL_MACHINE, keyString, 0, KEY_READ, &serverKey); - free(keyString); + LPCTSTR installPathKeyString = TEXT("SOFTWARE\\Apple Computer, Inc.\\Safari"); + LPCTSTR installPathWin64KeyString = TEXT("SOFTWARE\\Wow6432Node\\Apple Computer, Inc.\\Safari"); + HKEY installPathKey = 0; + LONG error = RegOpenKeyEx(HKEY_LOCAL_MACHINE, installPathKeyString, 0, KEY_READ, &installPathKey); + if (error != ERROR_SUCCESS) + error = RegOpenKeyEx(HKEY_LOCAL_MACHINE, installPathWin64KeyString, 0, KEY_READ, &installPathKey); if (error != ERROR_SUCCESS) { - LOG_WARNING(TEXT("Failed to open registry key %s\n"), keyString); + LOG_WARNING(TEXT("Failed to open registry key %s\n"), installPathKeyString); return 0; } - - TCHAR* webKitPath = getStringValue(serverKey, 0); - RegCloseKey(serverKey); + LPTSTR webKitPath = getStringValue(installPathKey, TEXT("InstallDir")); + RegCloseKey(installPathKey); if (!webKitPath) { - LOG_WARNING(TEXT("Couldn't retrieve value for registry key %s\n"), keyString); + LOG_WARNING(TEXT("Couldn't retrieve value for registry key %s\n"), installPathKeyString); return 0; } - - TCHAR* startOfFileName = PathFindFileName(webKitPath); - if (startOfFileName == webKitPath) { - LOG_WARNING(TEXT("Couldn't find filename from path %s\n"), webKitPath); - free(webKitPath); - return 0; - } - - *startOfFileName = '\0'; return webKitPath; } -static char* copyManifest(HMODULE module, LPCTSTR id) -{ - HRSRC resHandle = FindResource(module, id, MAKEINTRESOURCE(RT_MANIFEST)); - if (!resHandle) - return 0; - DWORD manifestSize = SizeofResource(module, resHandle); - if (!manifestSize) - return 0; - HGLOBAL resData = LoadResource(module, resHandle); - if (!resData) - return 0; - void* data = LockResource(resData); - if (!data) - return 0; - - char* dataCopy = static_cast<char*>(malloc(manifestSize + 1)); - if (!dataCopy) - return 0; - memcpy(dataCopy, data, manifestSize); - dataCopy[manifestSize] = 0; - return dataCopy; -} - -static void replaceManifest() -{ - TCHAR safariPath[MAX_PATH]; - ::ExpandEnvironmentStrings(TEXT("%TMP%\\WebKitNightly\\Safari.exe"), safariPath, ARRAYSIZE(safariPath)); - - // get the existing manifest out of Safari.exe - HMODULE safariModule = LoadLibraryEx(safariPath, 0, LOAD_LIBRARY_AS_DATAFILE); - if (!safariModule) - return; - char* safariManifest = copyManifest(safariModule, MAKEINTRESOURCE(1)); - FreeLibrary(safariModule); - if (!safariManifest) - return; - - // see if the existing Safari manifest contains registry free COM info - // (we only need to update if it is not registry free COM-aware) - bool needsUpdate = !strstr(safariManifest, "<comClass"); - free(safariManifest); - if (!needsUpdate) - return; - - // replace the manifest with the extra manifest stashed in FindSafar.exe (ID 100) - char* replacementManifest = copyManifest(0, MAKEINTRESOURCE(IDR_SAFARI_MANIFEST)); - if (!replacementManifest) - return; - if (HANDLE h = BeginUpdateResource(safariPath, FALSE)) { - UpdateResource(h, MAKEINTRESOURCE(RT_MANIFEST), MAKEINTRESOURCE(1), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), replacementManifest, strlen(replacementManifest)); - EndUpdateResource(h, FALSE); - } - - free(replacementManifest); -} - int _tmain(int argc, TCHAR* argv[]) { TCHAR* path = getInstalledWebKitDirectory(); @@ -189,7 +89,6 @@ int _tmain(int argc, TCHAR* argv[]) bool printLauncher = false; bool printEnvironment = false; bool debugger = false; - bool updateManifest = false; for (int i = 1; i < argc; ++i) { if (!_tcscmp(argv[i], TEXT("/printSafariLauncher"))) { @@ -204,16 +103,6 @@ int _tmain(int argc, TCHAR* argv[]) debugger = true; continue; } - - if (!_tcscmp(argv[i], TEXT("/updateManifest"))) { - updateManifest = true; - continue; - } - } - - if (updateManifest) { - replaceManifest(); - return 0; } // printLauncher is inclusive of printEnvironment, so do not @@ -232,13 +121,17 @@ int _tmain(int argc, TCHAR* argv[]) TEXT("del /s /q \"%%TMP%%\\WebKitNightly\""), TEXT("mkdir 2>NUL \"%%TMP%%\\WebKitNightly\\Safari.resources\""), TEXT("mkdir 2>NUL \"%%TMP%%\\WebKitNightly\\WebKit.resources\""), + TEXT("mkdir 2>NUL \"%%TMP%%\\WebKitNightly\\JavaScriptCore.resources\""), TEXT("xcopy /y /i /d \"%sSafari.exe\" \"%%TMP%%\\WebKitNightly\""), + TEXT("if exist \"%sSafari.dll\" xcopy /y /i /d \"%sSafari.dll\" \"%%TMP%%\\WebKitNightly\""), TEXT("xcopy /y /i /d /e \"%sSafari.resources\" \"%%TMP%%\\WebKitNightly\\Safari.resources\""), TEXT("xcopy /y /i /d /e \"%splugins\" \"%%TMP%%\\WebKitNightly\\plugins\""), TEXT("xcopy /y /i /d WebKit.dll \"%%TMP%%\\WebKitNightly\""), TEXT("xcopy /y /i /d WebKit.pdb \"%%TMP%%\\WebKitNightly\""), TEXT("xcopy /y /i /d /e WebKit.resources \"%%TMP%%\\WebKitNightly\\WebKit.resources\""), - TEXT("FindSafari.exe /updateManifest"), + TEXT("xcopy /y /i /d JavaScriptCore.dll \"%%TMP%%\\WebKitNightly\""), + TEXT("xcopy /y /i /d JavaScriptCore.pdb \"%%TMP%%\\WebKitNightly\""), + TEXT("xcopy /y /i /d /e JavaScriptCore.resources \"%%TMP%%\\WebKitNightly\\JavaScriptCore.resources\""), TEXT("set PATH=%%CD%%;%s;%%PATH%%"), }; @@ -257,7 +150,7 @@ int _tmain(int argc, TCHAR* argv[]) }; for (int i = 0; i < ARRAYSIZE(lines); ++i) { - _tprintf(lines[i], path); + _tprintf(lines[i], path, path); _tprintf(TEXT("\n")); } diff --git a/WebKitTools/GNUmakefile.am b/WebKitTools/GNUmakefile.am index 7e98e73..487a479 100644 --- a/WebKitTools/GNUmakefile.am +++ b/WebKitTools/GNUmakefile.am @@ -15,14 +15,18 @@ Programs_GtkLauncher_SOURCES = \ Programs_GtkLauncher_CFLAGS = \ -ansi \ -fno-strict-aliasing \ - -O2 \ $(global_cflags) \ $(GTK_CFLAGS) \ $(LIBSOUP_CFLAGS) Programs_GtkLauncher_LDADD = \ libwebkit-1.0.la \ - $(GTK_LIBS) + $(GTK_LIBS) \ + $(GLIB_LIBS) + +Programs_GtkLauncher_LDFLAGS = \ + -no-fast-install \ + -no-install # DumpRenderTree dumprendertree_cppflags := \ @@ -36,10 +40,12 @@ dumprendertree_cppflags := \ Programs_DumpRenderTree_CPPFLAGS = $(dumprendertree_cppflags) Programs_DumpRenderTree_SOURCES = \ - WebKitTools/DumpRenderTree/AccessibilityController.h \ - WebKitTools/DumpRenderTree/AccessibilityUIElement.h \ WebKitTools/DumpRenderTree/DumpRenderTree.h \ WebKitTools/DumpRenderTree/DumpRenderTreePrefix.h \ + WebKitTools/DumpRenderTree/AccessibilityController.cpp \ + WebKitTools/DumpRenderTree/AccessibilityController.h \ + WebKitTools/DumpRenderTree/AccessibilityUIElement.cpp \ + WebKitTools/DumpRenderTree/AccessibilityUIElement.h \ WebKitTools/DumpRenderTree/GCController.cpp \ WebKitTools/DumpRenderTree/GCController.h \ WebKitTools/DumpRenderTree/JavaScriptThreading.h \ @@ -50,6 +56,8 @@ Programs_DumpRenderTree_SOURCES = \ WebKitTools/DumpRenderTree/WorkQueue.h \ WebKitTools/DumpRenderTree/WorkQueueItem.h \ WebKitTools/DumpRenderTree/config.h \ + WebKitTools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp \ + WebKitTools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp \ WebKitTools/DumpRenderTree/gtk/DumpRenderTree.cpp \ WebKitTools/DumpRenderTree/gtk/DumpRenderTreeGtk.h \ WebKitTools/DumpRenderTree/gtk/GCControllerGtk.cpp \ @@ -58,11 +66,12 @@ Programs_DumpRenderTree_SOURCES = \ Programs_DumpRenderTree_CXXFLAGS = \ $(global_cxxflags) \ + $(dumprendertree_cppflags) \ $(Programs_DumpRenderTree_CFLAGS) Programs_DumpRenderTree_CFLAGS = \ -fno-strict-aliasing \ - -O2 \ + $(dumprendertree_cppflags) \ $(global_cflags) \ $(GLOBALDEPS_CFLAGS) \ $(CAIRO_CFLAGS) \ @@ -71,9 +80,16 @@ Programs_DumpRenderTree_CFLAGS = \ Programs_DumpRenderTree_LDADD = \ libwebkit-1.0.la \ + libJavaScriptCore.la \ $(GLOBALDEPS_LIBS) \ $(CAIRO_LIBS) \ - $(GTK_LIBS) + $(GTK_LIBS) \ + $(GLIB_LIBS) \ + $(LIBSOUP_LIBS) + +Programs_DumpRenderTree_LDFLAGS = \ + -no-fast-install \ + -no-install # clean target CLEANFILES += \ diff --git a/WebKitTools/GtkLauncher/main.c b/WebKitTools/GtkLauncher/main.c index 0c8c785..6994674 100644 --- a/WebKitTools/GtkLauncher/main.c +++ b/WebKitTools/GtkLauncher/main.c @@ -32,7 +32,7 @@ static GtkWidget* uri_entry; static GtkStatusbar* main_statusbar; static WebKitWebView* web_view; static gchar* main_title; -static gint load_progress; +static gdouble load_progress; static guint status_context_id; static void @@ -49,7 +49,7 @@ update_title (GtkWindow* window) GString* string = g_string_new (main_title); g_string_append (string, " - WebKit Launcher"); if (load_progress < 100) - g_string_append_printf (string, " (%d%%)", load_progress); + g_string_append_printf (string, " (%f%%)", load_progress); gchar* title = g_string_free (string, FALSE); gtk_window_set_title (window, title); g_free (title); @@ -74,18 +74,21 @@ title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar } static void -progress_change_cb (WebKitWebView* page, gint progress, gpointer data) +notify_load_status_cb (WebKitWebView* web_view, GParamSpec* pspec, gpointer data) { - load_progress = progress; - update_title (GTK_WINDOW (main_window)); + if (webkit_web_view_get_load_status (web_view) == WEBKIT_LOAD_COMMITTED) { + WebKitWebFrame* frame = webkit_web_view_get_main_frame (web_view); + const gchar* uri = webkit_web_frame_get_uri (frame); + if (uri) + gtk_entry_set_text (GTK_ENTRY (uri_entry), uri); + } } static void -load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data) +notify_progress_cb (WebKitWebView* web_view, GParamSpec* pspec, gpointer data) { - const gchar* uri = webkit_web_frame_get_uri(frame); - if (uri) - gtk_entry_set_text (GTK_ENTRY (uri_entry), uri); + load_progress = webkit_web_view_get_progress (web_view) * 100; + update_title (GTK_WINDOW (main_window)); } static void @@ -115,10 +118,10 @@ create_browser () web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ()); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view)); - g_signal_connect (G_OBJECT (web_view), "title-changed", G_CALLBACK (title_change_cb), web_view); - g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view); - g_signal_connect (G_OBJECT (web_view), "load-committed", G_CALLBACK (load_commit_cb), web_view); - g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view); + g_signal_connect (web_view, "title-changed", G_CALLBACK (title_change_cb), web_view); + g_signal_connect (web_view, "notify::load-status", G_CALLBACK (notify_load_status_cb), web_view); + g_signal_connect (web_view, "notify::progress", G_CALLBACK (notify_progress_cb), web_view); + g_signal_connect (web_view, "hovering-over-link", G_CALLBACK (link_hover_cb), web_view); return scrolled_window; } @@ -137,7 +140,11 @@ create_toolbar () { GtkWidget* toolbar = gtk_toolbar_new (); +#if GTK_CHECK_VERSION(2,15,0) + gtk_orientable_set_orientation (GTK_ORIENTABLE (toolbar), GTK_ORIENTATION_HORIZONTAL); +#else gtk_toolbar_set_orientation (GTK_TOOLBAR (toolbar), GTK_ORIENTATION_HORIZONTAL); +#endif gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ); GtkToolItem* item; @@ -174,7 +181,7 @@ create_window () GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 800, 600); gtk_widget_set_name (window, "GtkLauncher"); - g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL); + g_signal_connect (window, "destroy", G_CALLBACK (destroy_cb), NULL); return window; } diff --git a/WebKitTools/Scripts/VCSUtils.pm b/WebKitTools/Scripts/VCSUtils.pm index 5e92821..571487d 100644 --- a/WebKitTools/Scripts/VCSUtils.pm +++ b/WebKitTools/Scripts/VCSUtils.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2007 Apple Inc. All rights reserved. +# 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 @@ -28,15 +28,17 @@ use strict; use warnings; + +use Cwd qw(); # "qw()" prevents warnings about redefining getcwd() with "use POSIX;" +use File::Basename; use File::Spec; -use webkitdirs; BEGIN { use Exporter (); our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); $VERSION = 1.00; @ISA = qw(Exporter); - @EXPORT = qw(&isGitDirectory &isGit &isSVNDirectory &isSVN &makeFilePathRelative); + @EXPORT = qw(&chdirReturningRelativePath &determineSVNRoot &determineVCSRoot &isGit &isGitDirectory &isSVN &isSVNDirectory &makeFilePathRelative); %EXPORT_TAGS = ( ); @EXPORT_OK = (); } @@ -104,6 +106,68 @@ sub isSVN() return $isSVN; } +sub chdirReturningRelativePath($) +{ + my ($directory) = @_; + my $previousDirectory = Cwd::getcwd(); + chdir $directory; + my $newDirectory = Cwd::getcwd(); + return "." if $newDirectory eq $previousDirectory; + return File::Spec->abs2rel($previousDirectory, $newDirectory); +} + +sub determineGitRoot() +{ + chomp(my $gitDir = `git rev-parse --git-dir`); + return dirname($gitDir); +} + +sub determineSVNRoot() +{ + my $devNull = File::Spec->devnull(); + my $last = ''; + my $path = '.'; + my $parent = '..'; + my $repositoryUUID; + while (1) { + my $thisUUID; + # Ignore error messages in case we've run past the root of the checkout. + open INFO, "svn info '$path' 2> $devNull |" or die; + while (<INFO>) { + if (/^Repository UUID: (.+)/) { + $thisUUID = $1; + { local $/ = undef; <INFO>; } # Consume the rest of the input. + } + } + close INFO; + + # It's possible (e.g. for developers of some ports) to have a WebKit + # checkout in a subdirectory of another checkout. So abort if the + # repository UUID suddenly changes. + last if !$thisUUID; + if (!$repositoryUUID) { + $repositoryUUID = $thisUUID; + } + last if $thisUUID ne $repositoryUUID; + + $last = $path; + $path = File::Spec->catdir($parent, $path); + } + + return File::Spec->rel2abs($last); +} + +sub determineVCSRoot() +{ + if (isGit()) { + return determineGitRoot(); + } + if (isSVN()) { + return determineSVNRoot(); + } + die "Unable to determine VCS root"; +} + sub svnRevisionForDirectory($) { my ($dir) = @_; @@ -120,6 +184,29 @@ sub svnRevisionForDirectory($) return $revision; } +sub pathRelativeToSVNRepositoryRootForPath($) +{ + my ($file) = @_; + my $relativePath = File::Spec->abs2rel($file); + + my $svnInfo; + if (isSVN()) { + $svnInfo = `LC_ALL=C svn info $relativePath`; + } elsif (isGit()) { + $svnInfo = `LC_ALL=C git svn info $relativePath`; + } + + $svnInfo =~ /.*^URL: (.*?)$/m; + my $svnURL = $1; + + $svnInfo =~ /.*^Repository Root: (.*?)$/m; + my $repositoryRoot = $1; + + $svnURL =~ s/$repositoryRoot\///; + return $svnURL; +} + + my $gitRoot; sub makeFilePathRelative($) { diff --git a/WebKitTools/Scripts/add-include b/WebKitTools/Scripts/add-include new file mode 100755 index 0000000..d0525eb --- /dev/null +++ b/WebKitTools/Scripts/add-include @@ -0,0 +1,135 @@ +#!/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/WebKitTools/Scripts/bisect-builds b/WebKitTools/Scripts/bisect-builds index 45fdcc4..34230a9 100755 --- a/WebKitTools/Scripts/bisect-builds +++ b/WebKitTools/Scripts/bisect-builds @@ -209,7 +209,7 @@ sub createTempFile($) my ($fh, $tempFile) = tempfile( basename($0) . "-XXXXXXXX", - DIR => ($ENV{'TMPDIR'} || "/tmp"), + DIR => File::Spec->tmpdir, SUFFIX => ".html", UNLINK => 0, ); @@ -273,7 +273,7 @@ sub findSafariVersion($) while (<PLIST>) { if (m#^\s*<key>CFBundleShortVersionString</key>#) { $version = <PLIST>; - $version =~ s#^\s*<string>(.+)</string>\s*[\r\n]*#$1#; + $version =~ s#^\s*<string>([0-9.]+)[^<]*</string>\s*[\r\n]*#$1#; } } close(PLIST); diff --git a/WebKitTools/Scripts/bugzilla-tool b/WebKitTools/Scripts/bugzilla-tool new file mode 100755 index 0000000..b3c0d67 --- /dev/null +++ b/WebKitTools/Scripts/bugzilla-tool @@ -0,0 +1,695 @@ +#!/usr/bin/python +# 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. + +import fileinput # inplace file editing for set_reviewer_in_changelog +import os +import re +import StringIO # for add_patch_to_bug file wrappers +import subprocess +import sys + +from optparse import OptionParser, IndentedHelpFormatter, SUPPRESS_USAGE, make_option + +# Import WebKit-specific modules. +from modules.bugzilla import Bugzilla +from modules.logging import error, log +from modules.scm import CommitMessage, detect_scm_system, ScriptError + +def plural(noun): + # This is a dumb plural() implementation which was 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) + +# These could be put in some sort of changelogs.py. +def latest_changelog_entry(changelog_path): + # e.g. 2009-06-03 Eric Seidel <eric@webkit.org> + changelog_date_line_regexp = re.compile('^(\d{4}-\d{2}-\d{2})' # Consume the date. + + '\s+(.+)\s+' # Consume the name. + + '<([^<>]+)>$') # And finally the email address. + + entry_lines = [] + changelog = open(changelog_path) + try: + log("Parsing ChangeLog: " + changelog_path) + # The first line should be a date line. + first_line = changelog.readline() + if not changelog_date_line_regexp.match(first_line): + return None + entry_lines.append(first_line) + + for line in changelog: + # If we've hit the next entry, return. + if changelog_date_line_regexp.match(line): + return ''.join(entry_lines) + entry_lines.append(line) + finally: + changelog.close() + # We never found a date line! + return None + +def set_reviewer_in_changelog(changelog_path, reviewer): + # inplace=1 creates a backup file and re-directs stdout to the file + for line in fileinput.FileInput(changelog_path, inplace=1): + print line.replace("NOBODY (OOPS!)", reviewer.encode("utf-8")), # Trailing comma suppresses printing newline + +def modified_changelogs(scm): + changelog_paths = [] + paths = scm.changed_files() + for path in paths: + if os.path.basename(path) == "ChangeLog": + changelog_paths.append(path) + return changelog_paths + +def parse_bug_id(commit_message): + message = commit_message.message() + match = re.search("http\://webkit\.org/b/(?P<bug_id>\d+)", message) + if match: + return match.group('bug_id') + match = re.search(Bugzilla.bug_server_regex + "show_bug\.cgi\?id=(?P<bug_id>\d+)", message) + if match: + return match.group('bug_id') + return None + +def commit_message_for_this_commit(scm): + changelog_paths = modified_changelogs(scm) + if not len(changelog_paths): + raise ScriptError("Found no modified ChangeLogs, cannot create a commit message.\n" + "All changes require a ChangeLog. See:\n" + "http://webkit.org/coding/contributing.html") + + changelog_messages = [] + for path in changelog_paths: + changelog_entry = latest_changelog_entry(path) + if not changelog_entry: + error("Failed to parse ChangeLog: " + os.path.abspath(path)) + changelog_messages.append(changelog_entry) + + # FIXME: We should sort and label the ChangeLog messages like commit-log-editor does. + return CommitMessage(''.join(changelog_messages).splitlines()) + + +class Command: + def __init__(self, help_text, argument_names="", options=[], requires_local_commits=False): + self.help_text = help_text + self.argument_names = argument_names + self.options = options + self.option_parser = HelpPrintingOptionParser(usage=SUPPRESS_USAGE, add_help_option=False, option_list=self.options) + self.requires_local_commits = requires_local_commits + + def name_with_arguments(self, command_name): + usage_string = command_name + if len(self.options) > 0: + 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 execute(self, options, args, tool): + raise NotImplementedError, "subclasses must implement" + + +class BugsInCommitQueue(Command): + def __init__(self): + Command.__init__(self, 'Bugs in the commit queue') + + def execute(self, options, args, tool): + bug_ids = tool.bugs.fetch_bug_ids_from_commit_queue() + for bug_id in bug_ids: + print "%s" % bug_id + + +class PatchesInCommitQueue(Command): + def __init__(self): + Command.__init__(self, 'Patches in the commit queue') + + def execute(self, options, args, tool): + patches = tool.bugs.fetch_patches_from_commit_queue() + log("Patches in commit queue:") + for patch in patches: + print "%s" % patch['url'] + + +class ReviewedPatchesOnBug(Command): + def __init__(self): + Command.__init__(self, 'r+\'d patches on a bug', 'BUGID') + + def execute(self, options, args, tool): + bug_id = args[0] + patches_to_land = tool.bugs.fetch_reviewed_patches_from_bug(bug_id) + for patch in patches_to_land: + print "%s" % patch['url'] + + +class ApplyPatchesFromBug(Command): + def __init__(self): + options = [ + make_option("--no-update", action="store_false", dest="update", default=True, help="Don't update the working directory before applying patches"), + make_option("--force-clean", action="store_true", dest="force_clean", default=False, help="Clean working directory before applying patches (removes local changes and commits)"), + make_option("--no-clean", action="store_false", dest="clean", default=True, help="Don't check if the working directory is clean before applying patches"), + make_option("--local-commit", action="store_true", dest="local_commit", default=False, help="Make a local commit for each applied patch"), + ] + Command.__init__(self, 'Applies all patches on a bug to the local working directory without committing.', 'BUGID', options=options) + + @staticmethod + def apply_patches(patches, scm, commit_each): + for patch in patches: + scm.apply_patch(patch) + if commit_each: + commit_message = commit_message_for_this_commit(scm) + scm.commit_locally_with_message(commit_message.message() or patch['name']) + + def execute(self, options, args, tool): + bug_id = args[0] + patches = tool.bugs.fetch_reviewed_patches_from_bug(bug_id) + os.chdir(tool.scm().checkout_root) + if options.clean: + tool.scm().ensure_clean_working_directory(options.force_clean) + if options.update: + tool.scm().update_webkit() + + if options.local_commit and not tool.scm().supports_local_commits(): + error("--local-commit passed, but %s does not support local commits" % tool.scm().display_name()) + + self.apply_patches(patches, tool.scm(), options.local_commit) + + +def bug_comment_from_commit_text(scm, commit_text): + match = re.search(scm.commit_success_regexp(), commit_text, re.MULTILINE) + svn_revision = match.group('svn_revision') + commit_text += ("\nhttp://trac.webkit.org/changeset/%s" % svn_revision) + return commit_text + + +class LandAndUpdateBug(Command): + def __init__(self): + options = [ + make_option("-r", "--reviewer", action="store", type="string", dest="reviewer", help="Update ChangeLogs to say Reviewed by REVIEWER."), + make_option("--no-close", action="store_false", dest="close_bug", default=True, help="Leave bug open after landing."), + make_option("--no-build", action="store_false", dest="build", default=True, help="Commit without building first, implies --no-test."), + make_option("--no-test", action="store_false", dest="test", default=True, help="Commit without running run-webkit-tests."), + make_option("--quiet", action="store_true", dest="quiet", default=False, help="Produce less console output."), + make_option("--commit-queue", action="store_true", dest="commit_queue", default=False, help="Run in commit queue mode (no user interaction)."), + ] + Command.__init__(self, 'Lands the current working directory diff and updates the bug if provided.', '[BUGID]', options=options) + + def guess_reviewer_from_bug(self, bugs, bug_id): + patches = bugs.fetch_reviewed_patches_from_bug(bug_id) + if len(patches) != 1: + log("%s on bug %s, cannot infer reviewer." % (pluralize("reviewed patch", len(patches)), bug_id)) + return None + patch = patches[0] + reviewer = patch['reviewer'] + log('Guessing "%s" as reviewer from attachment %s on bug %s.' % (reviewer, patch['id'], bug_id)) + return reviewer + + def update_changelogs_with_reviewer(self, reviewer, bug_id, tool): + if not reviewer: + if not bug_id: + log("No bug id provided and --reviewer= not provided. Not updating ChangeLogs with reviewer.") + return + reviewer = self.guess_reviewer_from_bug(tool.bugs, bug_id) + + if not reviewer: + log("Failed to guess reviewer from bug %s and --reviewer= not provided. Not updating ChangeLogs with reviewer." % bug_id) + return + + changelogs = modified_changelogs(tool.scm()) + for changelog in changelogs: + set_reviewer_in_changelog(changelog, reviewer) + + def execute(self, options, args, tool): + bug_id = args[0] if len(args) else None + os.chdir(tool.scm().checkout_root) + + self.update_changelogs_with_reviewer(options.reviewer, bug_id, tool) + + comment_text = LandPatchesFromBugs.build_and_commit(tool.scm(), options) + if bug_id: + log("Updating bug %s" % bug_id) + if options.close_bug: + 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. + tool.bugs.post_comment_to_bug(bug_id, comment_text) + else: + log(comment_text) + log("No bug id provided.") + + +class LandPatchesFromBugs(Command): + def __init__(self): + options = [ + make_option("--force-clean", action="store_true", dest="force_clean", default=False, help="Clean working directory before applying patches (removes local changes and commits)"), + make_option("--no-clean", action="store_false", dest="clean", default=True, help="Don't check if the working directory is clean before applying patches"), + make_option("--no-close", action="store_false", dest="close_bug", default=True, help="Leave bug open after landing."), + make_option("--no-build", action="store_false", dest="build", default=True, help="Commit without building first, implies --no-test."), + make_option("--no-test", action="store_false", dest="test", default=True, help="Commit without running run-webkit-tests."), + make_option("--quiet", action="store_true", dest="quiet", default=False, help="Produce less console output."), + make_option("--commit-queue", action="store_true", dest="commit_queue", default=False, help="Run in commit queue mode (no user interaction)."), + ] + Command.__init__(self, 'Lands all patches on a bug optionally testing them first', 'BUGID', options=options) + + @staticmethod + def run_and_throw_if_fail(args, quiet=False): + child_stdout = subprocess.PIPE if quiet else None + child_process = subprocess.Popen(args, stdout=child_stdout) + if child_process.stdout: + child_process.communicate() + return_code = child_process.wait() + if return_code: + raise ScriptError("%s failed with exit code %d" % (" ".join(args), return_code)) + + # We might need to pass scm into this function for scm.checkout_root + @staticmethod + def webkit_script_path(script_name): + return os.path.join("WebKitTools", "Scripts", script_name) + + @classmethod + def run_webkit_script(cls, script_name, quiet=False): + print "Running WebKit Script " + script_name + cls.run_and_throw_if_fail(cls.webkit_script_path(script_name), quiet) + + @classmethod + def build_webkit(cls, quiet=False): + cls.run_webkit_script("build-webkit", quiet) + + @classmethod + def run_webkit_tests(cls, launch_safari, quiet=False): + args = [cls.webkit_script_path("run-webkit-tests")] + if not launch_safari: + args.append("--no-launch-safari") + if quiet: + args.append("--quiet") + cls.run_and_throw_if_fail(args) + + @staticmethod + def setup_for_landing(scm, options): + os.chdir(scm.checkout_root) + scm.ensure_no_local_commits(options.force_clean) + if options.clean: + scm.ensure_clean_working_directory(options.force_clean) + + @classmethod + def build_and_commit(cls, scm, options): + if options.build: + cls.build_webkit(quiet=options.quiet) + if options.test: + cls.run_webkit_tests(launch_safari=not options.commit_queue, quiet=options.quiet) + commit_message = commit_message_for_this_commit(scm) + commit_log = scm.commit_with_message(commit_message.message()) + return bug_comment_from_commit_text(scm, commit_log) + + @classmethod + def land_patches(cls, bug_id, patches, options, tool): + try: + comment_text = "" + for patch in patches: + tool.scm().update_webkit() # Update before every patch in case the tree has changed + tool.scm().apply_patch(patch, force=options.commit_queue) + comment_text = cls.build_and_commit(tool.scm(), options) + tool.bugs.clear_attachment_review_flag(patch['id'], comment_text) + + if options.close_bug: + tool.bugs.close_bug_as_fixed(bug_id, "All reviewed patches have been landed. Closing bug.") + except ScriptError, e: + # We should add a comment to the bug, and r- the patch on failure + error(e) + + def execute(self, options, args, tool): + if not len(args): + error("bug-id(s) required") + + bugs_to_patches = {} + patch_count = 0 + for bug_id in args: + patches = [] + if options.commit_queue: + patches = tool.bugs.fetch_commit_queue_patches_from_bug(bug_id) + else: + patches = tool.bugs.fetch_reviewed_patches_from_bug(bug_id) + if not len(patches): + log("No reviewed patches found on %s." % bug_id) + continue + patch_count += len(patches) + bugs_to_patches[bug_id] = patches + + log("Landing %s from %s." % (pluralize("patch", patch_count), pluralize("bug", len(args)))) + + self.setup_for_landing(tool.scm(), options) + + for bug_id in bugs_to_patches.keys(): + self.land_patches(bug_id, bugs_to_patches[bug_id], options, tool) + + +class CommitMessageForCurrentDiff(Command): + def __init__(self): + Command.__init__(self, 'Prints a commit message suitable for the uncommitted changes.') + + def execute(self, options, args, tool): + os.chdir(tool.scm().checkout_root) + print "%s" % commit_message_for_this_commit(tool.scm()).message() + + +class ObsoleteAttachmentsOnBug(Command): + def __init__(self): + Command.__init__(self, 'Marks all attachments on a bug as obsolete.', 'BUGID') + + def execute(self, options, args, tool): + bug_id = args[0] + attachments = tool.bugs.fetch_attachments_from_bug(bug_id) + for attachment in attachments: + if not attachment['is_obsolete']: + tool.bugs.obsolete_attachment(attachment['id']) + + +class PostDiffAsPatchToBug(Command): + def __init__(self): + options = [ + make_option("--no-obsolete", action="store_false", dest="obsolete_patches", default=True, help="Do not obsolete old patches before posting this one."), + make_option("--no-review", action="store_false", dest="review", default=True, help="Do not mark the patch for review."), + make_option("-m", "--description", action="store", type="string", dest="description", help="Description string for the attachment (default: 'patch')"), + ] + Command.__init__(self, 'Attaches the current working directory diff to a bug as a patch file.', 'BUGID', options=options) + + @staticmethod + def obsolete_patches_on_bug(bug_id, bugs): + patches = bugs.fetch_patches_from_bug(bug_id) + if len(patches): + log("Obsoleting %s on bug %s" % (pluralize('old patch', len(patches)), bug_id)) + for patch in patches: + bugs.obsolete_attachment(patch['id']) + + def execute(self, options, args, tool): + bug_id = args[0] + + if options.obsolete_patches: + self.obsolete_patches_on_bug(bug_id, tool.bugs) + + diff = tool.scm().create_patch() + diff_file = StringIO.StringIO(diff) # add_patch_to_bug expects a file-like object + + description = options.description or "Patch v1" + tool.bugs.add_patch_to_bug(bug_id, diff_file, description, mark_for_review=options.review) + + +class PostCommitsAsPatchesToBug(Command): + 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("--no-comment", action="store_false", dest="comment", default=True, help="Do not use commit log message as a comment for the patch."), + make_option("--no-obsolete", action="store_false", dest="obsolete_patches", default=True, help="Do not obsolete old patches before posting new ones."), + make_option("--no-review", action="store_false", dest="review", default=True, help="Do not mark the patch for review."), + make_option("-m", "--description", action="store", type="string", dest="description", help="Description string for the attachment (default: 'patch')"), + ] + Command.__init__(self, 'Attaches a range of local commits to bugs as patch files.', 'COMMITISH', options=options, requires_local_commits=True) + + def execute(self, options, args, tool): + if not args: + error("%s argument is required" % self.argument_names) + + commit_ids = tool.scm().commit_ids_from_commitish_arguments(args) + if len(commit_ids) > 10: + error("Are you sure you want to attach %s patches?" % (pluralize('patch', len(commit_ids)))) + # Could add a --patches-limit option. + + have_obsoleted_patches = set() + for commit_id in commit_ids: + # FIXME: commit_message is the wrong place to look for the bug_id + # the ChangeLogs should have the bug id, but the local commit message might not. + commit_message = tool.scm().commit_message_for_local_commit(commit_id) + + bug_id = options.bug_id or parse_bug_id(commit_message) + if not bug_id: + log("Skipping %s: No bug id found in commit log or specified with --bug-id." % commit_id) + continue + + if options.obsolete_patches and bug_id not in have_obsoleted_patches: + PostDiffAsPatchToBug.obsolete_patches_on_bug(bug_id, tool.bugs) + have_obsoleted_patches.add(bug_id) + + description = options.description or commit_message.description(lstrip=True, strip_url=True) + comment_text = None + if (options.comment): + 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_from_local_commit(commit_id) + diff_file = StringIO.StringIO(diff) # add_patch_to_bug expects a file-like object + tool.bugs.add_patch_to_bug(bug_id, diff_file, description, comment_text, mark_for_review=options.review) + + +class CreateBug(Command): + def __init__(self): + options = [ + make_option("--cc", action="store", type="string", dest="cc", help="Comma-separated list of email addresses to carbon-copy."), + make_option("--component", action="store", type="string", dest="component", help="Component for the new bug."), + 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."), + ] + Command.__init__(self, 'Create a bug from local changes or local commits.', '[COMMITISH]', 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: + error("Are you sure you want to create one bug with %s patches?" % len(commit_ids)) + + 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_from_local_commit(commit_id) + diff_file = StringIO.StringIO(diff) # create_bug_with_patch expects a file-like object + bug_id = tool.bugs.create_bug_with_patch(bug_title, comment_text, options.component, diff_file, "Patch v1", cc=options.cc, mark_for_review=options.review) + + 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. + PostCommitsAsPatchesToBug.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 = commit_message_for_this_commit(tool.scm()) + bug_title = commit_message.description(lstrip=True, strip_url=True) + comment_text = commit_message.body(lstrip=True) + + diff = tool.scm().create_patch() + diff_file = StringIO.StringIO(diff) # create_bug_with_patch expects a file-like object + bug_id = tool.bugs.create_bug_with_patch(bug_title, comment_text, options.component, diff_file, "Patch v1", cc=options.cc, mark_for_review=options.review) + + def prompt_for_bug_title_and_comment(self): + bug_title = raw_input("Bug title: ") + print("Bug comment (hit ^D on blank line to end):") + lines = sys.stdin.readlines() + sys.stdin.seek(0, os.SEEK_END) + 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()): + error("Extra arguments not supported; patch is taken from working directory.") + self.create_bug_from_commit(options, args, tool) + else: + self.create_bug_from_patch(options, args, tool) + + +class NonWrappingEpilogIndentedHelpFormatter(IndentedHelpFormatter): + def __init__(self): + IndentedHelpFormatter.__init__(self) + + # The standard IndentedHelpFormatter paragraph-wraps the epilog, killing our custom formatting. + def format_epilog(self, epilog): + if epilog: + return "\n" + epilog + "\n" + return "" + + +class HelpPrintingOptionParser(OptionParser): + def error(self, msg): + self.print_usage(sys.stderr) + error_message = "%s: error: %s\n" % (self.get_prog_name(), msg) + error_message += "\nType '" + self.get_prog_name() + " --help' to see usage.\n" + self.exit(2, error_message) + + +class BugzillaTool: + def __init__(self): + self.cached_scm = None + self.bugs = Bugzilla() + self.commands = [ + { 'name' : 'bugs-to-commit', 'object' : BugsInCommitQueue() }, + { 'name' : 'patches-to-commit', 'object' : PatchesInCommitQueue() }, + { 'name' : 'reviewed-patches', 'object' : ReviewedPatchesOnBug() }, + { 'name' : 'create-bug', 'object' : CreateBug() }, + { 'name' : 'apply-patches', 'object' : ApplyPatchesFromBug() }, + { 'name' : 'land-diff', 'object' : LandAndUpdateBug() }, + { 'name' : 'land-patches', 'object' : LandPatchesFromBugs() }, + { 'name' : 'commit-message', 'object' : CommitMessageForCurrentDiff() }, + { 'name' : 'obsolete-attachments', 'object' : ObsoleteAttachmentsOnBug() }, + { 'name' : 'post-diff', 'object' : PostDiffAsPatchToBug() }, + { 'name' : 'post-commits', 'object' : PostCommitsAsPatchesToBug() }, + ] + + self.global_option_parser = HelpPrintingOptionParser(usage=self.usage_line(), formatter=NonWrappingEpilogIndentedHelpFormatter(), epilog=self.commands_usage()) + self.global_option_parser.add_option("--dry-run", action="store_true", dest="dryrun", help="do not touch remote servers", default=False) + + def scm(self): + # Lazily initialize SCM to not error-out before command line parsing (or when running non-scm commands). + original_cwd = os.path.abspath('.') + if not self.cached_scm: + self.cached_scm = detect_scm_system(original_cwd) + + if not self.cached_scm: + script_directory = os.path.abspath(sys.path[0]) + webkit_directory = os.path.abspath(os.path.join(script_directory, "../..")) + self.cached_scm = detect_scm_system(webkit_directory) + if self.cached_scm: + log("The current directory (%s) is not a WebKit checkout, using %s" % (original_cwd, webkit_directory)) + else: + error("FATAL: Failed to determine the SCM system for either %s or %s" % (original_cwd, webkit_directory)) + + return self.cached_scm + + @staticmethod + def usage_line(): + return "Usage: %prog [options] command [command-options] [command-arguments]" + + def commands_usage(self): + commands_text = "Commands:\n" + longest_name_length = 0 + command_rows = [] + scm_supports_local_commits = self.scm().supports_local_commits() + for command in self.commands: + command_object = command['object'] + if command_object.requires_local_commits and not scm_supports_local_commits: + continue + command_name_and_args = command_object.name_with_arguments(command['name']) + command_rows.append({ 'name-and-args': command_name_and_args, 'object': command_object }) + longest_name_length = max([longest_name_length, len(command_name_and_args)]) + + # Use our own help formatter so as to indent enough. + formatter = IndentedHelpFormatter() + formatter.indent() + formatter.indent() + + for row in command_rows: + command_object = row['object'] + commands_text += " " + row['name-and-args'].ljust(longest_name_length + 3) + command_object.help_text + "\n" + commands_text += command_object.option_parser.format_option_help(formatter) + return commands_text + + def handle_global_args(self, args): + (options, args) = self.global_option_parser.parse_args(args) + if len(args): + # We'll never hit this because split_args splits at the first arg without a leading '-' + self.global_option_parser.error("Extra arguments before command: " + args) + + if options.dryrun: + self.scm().dryrun = True + self.bugs.dryrun = True + + @staticmethod + def split_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 (args[:], None, []) + + global_args = args[:command_index] + command = args[command_index] + command_args = args[command_index + 1:] + return (global_args, command, command_args) + + def command_by_name(self, command_name): + for command in self.commands: + if command_name == command['name']: + return command + return None + + def main(self): + (global_args, command_name, args_after_command_name) = self.split_args(sys.argv[1:]) + + # Handle --help, etc: + self.handle_global_args(global_args) + + if not command_name: + self.global_option_parser.error("No command specified") + + command = self.command_by_name(command_name) + if not command: + self.global_option_parser.error(command_name + " is not a recognized command") + + command_object = command['object'] + + if command_object.requires_local_commits and not self.scm().supports_local_commits(): + error(command_name + " requires local commits using %s in %s." % (self.scm().display_name(), self.scm().checkout_root)) + + (command_options, command_args) = command_object.parse_args(args_after_command_name) + return command_object.execute(command_options, command_args, self) + + +def main(): + tool = BugzillaTool() + return tool.main() + +if __name__ == "__main__": + main() diff --git a/WebKitTools/Scripts/build-dumprendertree b/WebKitTools/Scripts/build-dumprendertree index 46e86e0..72e81b0 100755 --- a/WebKitTools/Scripts/build-dumprendertree +++ b/WebKitTools/Scripts/build-dumprendertree @@ -1,6 +1,6 @@ #!/usr/bin/perl -w -# Copyright (C) 2005 Apple Computer, Inc. All rights reserved. +# 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 @@ -26,29 +26,54 @@ # (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 + --wx Build the wxWindows port +EOF + +GetOptions( + 'help' => \$showHelp, + 'clean' => \$clean, +); + +if ($showHelp) { + print STDERR $usage; + exit 1; +} + checkRequiredSystemConfig(); setConfiguration(); chdirWebKit(); -my @options = XcodeOptions(); # Build chdir "WebKitTools/DumpRenderTree" or die; + my $result; if (isAppleMacWebKit()) { - $result = system "xcodebuild", "-project", "DumpRenderTree.xcodeproj", @options, @ARGV; + $result = buildXCodeProject("DumpRenderTree", $clean, XcodeOptions(), @ARGV); } elsif (isAppleWinWebKit()) { - $result = buildVisualStudioProject("DumpRenderTree.sln"); -} elsif (isQt() || isGtk()) { - # Qt and Gtk build everything in one shot. No need to build anything here. + $result = buildVisualStudioProject("DumpRenderTree.sln", $clean); +} elsif (isQt() || isGtk() || isWx()) { + # Qt, Gtk and wxWindows build everything in one shot. No need to build anything here. $result = 0; } else { die "Building not defined for this platform!\n"; } + exit exitStatus($result); diff --git a/WebKitTools/Scripts/build-jsc b/WebKitTools/Scripts/build-jsc index 78ed0d0..0316349 100755 --- a/WebKitTools/Scripts/build-jsc +++ b/WebKitTools/Scripts/build-jsc @@ -67,8 +67,6 @@ if (isAppleMacWebKit()) { $result = system "sh", "-c", 'xcodebuild -project JavaScriptCore.xcodeproj "$@" | grep -v setenv && exit ${PIPESTATUS[0]}', "xcodebuild", @options, @ARGV, @coverageSupportOptions; } elsif (isAppleWinWebKit()) { $result = buildVisualStudioProject("JavaScriptCore.vcproj/JavaScriptCore.sln"); -} elsif (isChromium()) { - $result = buildSconsProject("JavaScriptCore"); } elsif (isQt() or isGtk() or isWx()) { # Qt and Gtk build everything in one-shot. No need to build anything here. $result = 0; diff --git a/WebKitTools/Scripts/build-webkit b/WebKitTools/Scripts/build-webkit index 788ace0..fe6d3c7 100755 --- a/WebKitTools/Scripts/build-webkit +++ b/WebKitTools/Scripts/build-webkit @@ -38,86 +38,164 @@ use webkitdirs; use POSIX; my $originalWorkingDirectory = getcwd(); +chdirWebKit(); -my $channelMessagingSupport = 0; -my $databaseSupport = 1; -my $domStorageSupport = 1; -my $gnomeKeyringSupport = 0; -my $iconDatabaseSupport = 1; -my $offlineWebApplicationSupport = 1; -my $svgSupport = 1; -my $svgAnimationSupport = 1; -my $svgFiltersSupport = 0; -my $svgForeignObjectSupport = 1; -my $svgUseSupport = 1; -my $svgFontsSupport = 1; -my $svgAsImageSupport = 1; -my $xpathSupport = 1; -my $xsltSupport = 1; -my $wmlSupport = 0; -my $coverageSupport = 0; -my $videoSupport = (isAppleWebKit() || isGtk()); # Enable by default for Apple's builds and Gtk+ -my $workersSupport = (isAppleWebKit() || isGtk()); # Enable by default for Apple's builds (mac/win) and Gtk+ -my $geolocationSupport = (isAppleMacWebKit() && !isTiger() && !isLeopard()); my $showHelp = 0; my $clean = 0; -my $threeDRenderingSupport = 0; +my $minimal = 0; +my $makeArgs; + +my ($threeDCanvasSupport, $threeDRenderingSupport, $channelMessagingSupport, $databaseSupport, $datagridSupport, $domStorageSupport, + $filtersSupport, $geolocationSupport, $gnomeKeyringSupport, $iconDatabaseSupport, + $javaScriptDebuggerSupport, $offlineWebApplicationSupport, $rubySupport, $sharedWorkersSupport, + $svgSupport, $svgAnimationSupport, $svgAsImageSupport, $svgDOMObjCBindingsSupport, $svgFontsSupport, + $svgForeignObjectSupport, $svgUseSupport, $videoSupport, $webSocketsSupport, $wmlSupport, $workersSupport, + $xpathSupport, $xsltSupport, $coverageSupport); + +my @features = ( + { option => "3d-canvas", desc => "Toggle 3D canvas support", + define => "ENABLE_3D_CANVAS", default => 0, value => \$threeDCanvasSupport }, + + { option => "3d-rendering", desc => "Toggle 3D rendering support", + define => "ENABLE_3D_RENDERING", default => (isAppleMacWebKit() && !isTiger()), value => \$threeDRenderingSupport }, + + { option => "channel-messaging", desc => "Toggle MessageChannel and MessagePort support", + define => "ENABLE_CHANNEL_MESSAGING", default => 1, value => \$channelMessagingSupport }, + + { option => "coverage", desc => "Toggle code coverage support", + define => "", default => 0, value => \$coverageSupport }, + + { option => "database", desc => "Toggle Database Support", + define => "ENABLE_DATABASE", default => 1, value => \$databaseSupport }, + + { option => "datagrid", desc => "Toggle Datagrid Support", + define => "ENABLE_DATAGRID", default => 1, value => \$datagridSupport }, + + { option => "dom-storage", desc => "Toggle DOM Storage Support", + define => "ENABLE_DOM_STORAGE", default => 1, value => \$domStorageSupport }, + + { option => "filters", desc => "Toggle Filters support", + define => "ENABLE_FILTERS", default => 0, value => \$filtersSupport }, + + { option => "geolocation", desc => "Toggle Geolocation support", + define => "ENABLE_GEOLOCATION", default => 0, value => \$geolocationSupport }, + + { option => "gnomekeyring", desc => "Toggle GNOME Keyring Support (GTK+ port only)", + define => "WTF_USE_GNOMEKEYRING", default => 0, value => \$gnomeKeyringSupport }, + + { option => "icon-database", desc => "Toggle Icon database support", + define => "ENABLE_ICONDATABASE", default => 1, value => \$iconDatabaseSupport }, + + { option => "javascript-debugger", desc => "Toggle JavaScript Debugger/Profiler support", + define => "ENABLE_JAVASCRIPT_DEBUGGER", default => 1, value => \$javaScriptDebuggerSupport }, + + { option => "offline-web-applications", desc => "Toggle Offline Web Application Support", + define => "ENABLE_OFFLINE_WEB_APPLICATIONS", default => 1, value => \$offlineWebApplicationSupport }, + + { option => "ruby", desc => "Toggle HTML5 Ruby support", + define => "ENABLE_RUBY", default => 1, value => \$rubySupport }, + + { option => "shared-workers", desc => "Toggle SharedWorkers support", + define => "ENABLE_SHARED_WORKERS", default => 0, value => \$sharedWorkersSupport }, + + { option => "svg", desc => "Toggle SVG support", + define => "ENABLE_SVG", default => 1, value => \$svgSupport }, + + { option => "svg-animation", desc => "Toggle SVG animation support (implies SVG support)", + define => "ENABLE_SVG_ANIMATION", default => 1, value => \$svgAnimationSupport }, + + { option => "svg-as-image", desc => "Toggle SVG as Image support (implies SVG support)", + define => "ENABLE_SVG_AS_IMAGE", default => 1, value => \$svgAsImageSupport }, + + { option => "svg-dom-objc-bindings", desc => "Toggle SVG DOM Objective-C bindings support (implies SVG support)", + define => "ENABLE_SVG_DOM_OBJC_BINDINGS", default => isAppleMacWebKit(), value => \$svgDOMObjCBindingsSupport }, + + { option => "svg-fonts", desc => "Toggle SVG fonts support (imples SVG support)", + define => "ENABLE_SVG_FONTS", default => 1, value => \$svgFontsSupport }, + + { option => "svg-foreign-object", desc => "Toggle SVG foreign object support (implies SVG support)", + define => "ENABLE_SVG_FOREIGN_OBJECT", default => 1, value => \$svgForeignObjectSupport }, + + { option => "svg-use", desc => "Toggle SVG use element support (implies SVG support)", + define => "ENABLE_SVG_USE", default => 1, value => \$svgUseSupport }, + + { option => "video", desc => "Toggle Video support", + define => "ENABLE_VIDEO", default => (isAppleWebKit() || isGtk()), value => \$videoSupport }, + + { option => "web-sockets", desc => "Toggle Web Sockets support", + define => "ENABLE_WEB_SOCKETS", default => 1, value=> \$webSocketsSupport }, + + { option => "wml", desc => "Toggle WML support", + define => "ENABLE_WML", default => 0, value => \$wmlSupport }, + + { option => "workers", desc => "Toggle Web Workers support", + define => "ENABLE_WORKERS", default => (isAppleWebKit() || isGtk()), value => \$workersSupport }, + + { option => "xpath", desc => "Toggle XPath support", + define => "ENABLE_XPATH", default => 1, value => \$xpathSupport }, + + { option => "xslt", desc => "Toggle XSLT support", + define => "ENABLE_XSLT", default => 1, value => \$xsltSupport }, +); + +# Update defaults from Qt's project file +if (isQt()) { + my %qtDefaults = qtFeatureDefaults(); + foreach (@features) { + $_->{default} = $qtDefaults{$_->{define}} || 0; + } +} + +# Initialize values from defaults +foreach (@ARGV) { + if ($_ eq '--minimal') { + $minimal = 1; + last; + } +} + +# Initialize values from defaults +foreach (@features) { + ${$_->{value}} = ($_->{default} && !$minimal) || 0; +} + +$svgSupport = $svgSupport || $svgAnimationSupport || $svgAsImageSupport + || $svgDOMObjCBindingsSupport || $svgFontsSupport + || $svgForeignObjectSupport || $svgUseSupport; + my $programName = basename($0); my $usage = <<EOF; Usage: $programName [options] [options to pass to build system] - --help Show this help message - --cairo-win32 Build using Cairo (rather than CoreGraphics) on Windows - --chromium Build the Chromium port on Mac/Win/Linux - --clean Cleanup the build directory - --gtk Build the GTK+ port - --[no-]3d-rendering Toggle 3D rendering support (default: $threeDRenderingSupport) - --[no-]channel-messaging Toggle MessageChannel and MessagePort support (default: $channelMessagingSupport) - --[no-]offline-web-applications Toggle Offline Web Application Support (default : $offlineWebApplicationSupport) - --[no-]database Toggle Database Support (default: $databaseSupport) - --[no-]dom-storage Toggle DOM Storage Support (default: $domStorageSupport) - --[no-]gnomekeyring Toggle GNOME Keyring Support (GTK+ port only) (default: $gnomeKeyringSupport) - --[no-]icon-database Toggle Icon database support (default: $iconDatabaseSupport) - --[no-]svg Toggle SVG support (default: $svgSupport) - --[no-]svg-animation Toggle SVG animation support (default: $svgAnimationSupport, implies SVG Support) - --[no-]svg-filters Toggle SVG filters support (default: $svgFiltersSupport, implies SVG Support) - --[no-]svg-foreign-object Toggle SVG foreign object support (default: $svgForeignObjectSupport, implies SVG Support) - --[no-]svg-fonts Toggle SVG fonts support (default: $svgFontsSupport, implies SVG Support) - --[no-]svg-as-image Toggle SVG as Image support (default: $svgAsImageSupport, implies SVG Support) - --[no-]svg-use Toggle SVG use element support (default: $svgUseSupport, implies SVG Support) - --[no-]xpath Toggle XPath support (default: $xpathSupport) - --[no-]xslt Toggle XSLT support (default: $xsltSupport) - --[no-]wml Toggle WML support (default: $wmlSupport) - --[no-]video Toggle Video support (default: $videoSupport) - --[no-]workers Toggle Web Workers support (default: $workersSupport) - --[no-]geolocation Toggle Geolocation support (default: $geolocationSupport) - --[no-]coverage Toggle code coverage support (default: $coverageSupport) + --help Show this help message + --clean Cleanup the build directory + --debug Compile in debug mode + --cairo-win32 Build using Cairo (rather than CoreGraphics) on Windows + --chromium Build the Chromium port on Mac/Win/Linux + --gtk Build the GTK+ port + --qt Build the Qt port + + --makeargs=<arguments> Optional Makefile flags + + --minimal No optional features, unless explicitly enabled. + EOF -GetOptions( - '3d-rendering!' => \$threeDRenderingSupport, - 'channel-messaging!' => \$channelMessagingSupport, - 'database!' => \$databaseSupport, - 'dom-storage!' => \$domStorageSupport, - 'gnomekeyring!' => \$gnomeKeyringSupport, - 'icon-database!' => \$iconDatabaseSupport, - 'offline-web-applications!' => \$offlineWebApplicationSupport, - 'svg!' => \$svgSupport, - 'svg-animation!' => \$svgAnimationSupport, - 'svg-filters!' => \$svgFiltersSupport, - 'svg-foreign-object!' => \$svgForeignObjectSupport, - 'svg-fonts!' => \$svgFontsSupport, - 'svg-as-image!' => \$svgAsImageSupport, - 'svg-use!' => \$svgUseSupport, - 'xpath!' => \$xpathSupport, - 'xslt!' => \$xsltSupport, - 'wml!' => \$wmlSupport, - 'video!' => \$videoSupport, - 'workers!' => \$workersSupport, - 'geolocation!' => \$geolocationSupport, - 'coverage!' => \$coverageSupport, - 'help' => \$showHelp, - 'clean' => \$clean); +my %options = ( + 'help' => \$showHelp, + 'clean' => \$clean, + 'makeargs=s' => \$makeArgs, + 'minimal' => \$minimal, +); + +# Build usage text and options list from features +foreach (@features) { + my $opt = sprintf("%-35s", " --[no-]$_->{option}"); + $usage .= "$opt $_->{desc} (default: $_->{default})\n"; + $options{"$_->{option}!"} = $_->{value}; +} + +GetOptions(%options); if ($showHelp) { print STDERR $usage; @@ -126,7 +204,6 @@ if ($showHelp) { checkRequiredSystemConfig(); setConfiguration(); -chdirWebKit(); if (isWx()) { $ENV{"WEBKITOUTPUTDIR"} = productDir(); @@ -140,40 +217,12 @@ if (isWx()) { exit exitStatus($?); } - my $productDir = productDir(); -my @overrideFeatureDefinesOption = (); - -# This needs to be kept sorted, and in sync with FEATURE_DEFINES in JavaScriptCore.xcconfig, WebCore.xcconfig -# and WebKit.xcconfig to prevent needless rebuilding when using both Xcode and build-webkit. - -push @overrideFeatureDefinesOption, "ENABLE_3D_RENDERING" if $threeDRenderingSupport; -push @overrideFeatureDefinesOption, "ENABLE_CHANNEL_MESSAGING" if $channelMessagingSupport; -push @overrideFeatureDefinesOption, "ENABLE_DATABASE" if $databaseSupport; -push @overrideFeatureDefinesOption, "ENABLE_DOM_STORAGE" if $domStorageSupport; -push @overrideFeatureDefinesOption, "ENABLE_ICONDATABASE" if $iconDatabaseSupport; -push @overrideFeatureDefinesOption, "ENABLE_OFFLINE_WEB_APPLICATIONS" if $offlineWebApplicationSupport; -push @overrideFeatureDefinesOption, "ENABLE_SVG" if $svgSupport; -push @overrideFeatureDefinesOption, "ENABLE_SVG_ANIMATION" if $svgAnimationSupport; -push @overrideFeatureDefinesOption, "ENABLE_SVG_AS_IMAGE" if $svgAsImageSupport; -push @overrideFeatureDefinesOption, "ENABLE_SVG_FILTERS" if $svgFiltersSupport; -push @overrideFeatureDefinesOption, "ENABLE_SVG_FONTS" if $svgFontsSupport; -push @overrideFeatureDefinesOption, "ENABLE_SVG_FOREIGN_OBJECT" if $svgForeignObjectSupport; -push @overrideFeatureDefinesOption, "ENABLE_SVG_USE" if $svgUseSupport; -push @overrideFeatureDefinesOption, "ENABLE_VIDEO" if $videoSupport; -push @overrideFeatureDefinesOption, "ENABLE_WORKERS" if $workersSupport; -push @overrideFeatureDefinesOption, "ENABLE_XPATH" if $xpathSupport; -push @overrideFeatureDefinesOption, "ENABLE_XSLT" if $xsltSupport; -push @overrideFeatureDefinesOption, "ENABLE_WML" if $wmlSupport; -push @overrideFeatureDefinesOption, "ENABLE_GEOLOCATION" if $geolocationSupport; -my $overrideFeatureDefinesString = "FEATURE_DEFINES=" . join(" ", @overrideFeatureDefinesOption); - -my @coverageSupportOption = ($coverageSupport) ? XcodeCoverageSupportOptions() : (); # Check that all the project directories are there. my @projects = ("JavaScriptCore", "WebCore", "WebKit"); # Only Apple builds JavaScriptGlue, and only on the Mac -push @projects, "JavaScriptGlue" if isAppleMacWebKit(); +splice @projects, 1, 0, "JavaScriptGlue" if isAppleMacWebKit(); my @otherDirs = ("WebKitLibraries"); for my $dir (@projects, @otherDirs) { @@ -186,49 +235,47 @@ my @options = (); # enable autotool options accordingly if (isGtk()) { - push @options, autotoolsFlag($databaseSupport, "database"); - push @options, autotoolsFlag($domStorageSupport, "dom-storage"); - push @options, autotoolsFlag($gnomeKeyringSupport, "gnomekeyring"); - push @options, autotoolsFlag($iconDatabaseSupport, "icon-database"); - push @options, autotoolsFlag($offlineWebApplicationSupport, "offline-web-applications"); - push @options, autotoolsFlag($threeDRenderingSupport, "3D-rendering"); - push @options, autotoolsFlag($channelMessagingSupport, "channel-messaging"); - push @options, autotoolsFlag($svgSupport, "svg"); - push @options, autotoolsFlag($svgAnimationSupport, "svg-animation"); - push @options, autotoolsFlag($svgFiltersSupport, "svg-filters"); - push @options, autotoolsFlag($svgForeignObjectSupport, "svg-foreign-object"); - push @options, autotoolsFlag($svgFontsSupport, "svg-fonts"); - push @options, autotoolsFlag($svgAsImageSupport, "svg-as-image"); - push @options, autotoolsFlag($svgUseSupport, "svg-use-element"); - push @options, autotoolsFlag($xpathSupport, "xpath"); - push @options, autotoolsFlag($xsltSupport, "xslt"); - push @options, autotoolsFlag($wmlSupport, "wml"); - push @options, autotoolsFlag($videoSupport, "video"); - push @options, autotoolsFlag($workersSupport, "web-workers"); - push @options, autotoolsFlag($coverageSupport, "coverage"); -} + foreach (@features) { + push @options, autotoolsFlag(${$_->{value}}, $_->{option}); + } -if (isAppleMacWebKit()) { + push @options, "--makeargs=" . $makeArgs if defined($makeArgs); +} elsif (isAppleMacWebKit()) { + push @options, XcodeOptions(); - push(@options, XcodeOptions()); + sub option($$) + { + my ($feature, $isEnabled) = @_; + return $feature . "=" . ($isEnabled ? $feature : " "); + } - # Copy library and header from WebKitLibraries to a findable place in the product directory. - my $srcLib = "WebKitLibraries/libWebKitSystemInterfaceTiger.a"; - my $lib = "$productDir/libWebKitSystemInterfaceTiger.a"; - if (!-e $lib || -M $lib > -M $srcLib) { - print "Updating $lib\n"; - system "ditto", $srcLib, $lib; - system "ranlib", $lib; + foreach (@features) { + if ($_->{option} eq "coverage") { + push @options, XcodeCoverageSupportOptions() if $coverageSupport; + } else { + push @options, option($_->{define}, ${$_->{value}}); + } } - $srcLib = "WebKitLibraries/libWebKitSystemInterfaceLeopard.a"; - $lib = "$productDir/libWebKitSystemInterfaceLeopard.a"; - if (!-e $lib || -M $lib > -M $srcLib) { - print "Updating $lib\n"; - system "ditto", $srcLib, $lib; - system "ranlib", $lib; + # Copy library and header from WebKitLibraries to a findable place in the product directory. + + my @librariesToCopy = ( + "libWebKitSystemInterfaceTiger.a", + "libWebKitSystemInterfaceLeopard.a", + "libWebKitSystemInterfaceSnowLeopard.a", + "libWebCoreSQLite3.a", + ); + 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) { @@ -237,26 +284,23 @@ if (isAppleMacWebKit()) { system "ditto", $srcHeader, $header; } - $srcLib = "WebKitLibraries/libWebCoreSQLite3.a"; - $lib = "$productDir/libWebCoreSQLite3.a"; - if (!-e $lib || -M $lib > -M $srcLib) { - print "Updating $lib\n"; - system "ditto", $srcLib, $lib; - system "ranlib", $lib; - } - my $srcHeaderDir = "WebKitLibraries/WebCoreSQLite3"; my $headerDir = "$productDir/WebCoreSQLite3"; if (!-e $headerDir || -M $headerDir > -M $srcHeaderDir) { print "Updating $headerDir\n"; system "ditto", $srcHeaderDir, $headerDir; } -} - -if (isAppleWinWebKit()) { +} 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 WebKitTools/Scripts/update-webkit-support-libs") == 0) or die; +} elsif (isQt()) { + @options = @ARGV; + push @options, "--makeargs=" . $makeArgs if defined($makeArgs); + + foreach (@features) { + push @options, "DEFINES+=$_->{define}=${$_->{value}}" if ${$_->{value}} != $_->{default}; + } } # Force re-link of existing libraries if different than expected @@ -276,20 +320,13 @@ for my $dir (@projects) { if (isGtk()) { $result = buildGtkProject($dir, $clean, @options); } elsif (isQt()) { - $result = buildQMakeQtProject($dir, $clean, @ARGV); + $result = buildQMakeQtProject($dir, $clean, @options); } elsif (isAppleMacWebKit()) { - my @xcodeOptions = (); - push(@xcodeOptions, @options); - push(@xcodeOptions, $overrideFeatureDefinesString); - push(@xcodeOptions, @coverageSupportOption); - push(@xcodeOptions, @ARGV); - $result = buildXCodeProject($dir, $clean, @xcodeOptions); + $result = buildXCodeProject($dir, $clean, @options, @ARGV); } elsif (isAppleWinWebKit()) { if ($dir eq "WebKit") { $result = buildVisualStudioProject("win/WebKit.vcproj/WebKit.sln", $clean); } - } elsif (isChromium()) { - $result = buildSconsProject($dir, $clean); } if (exitStatus($result)) { @@ -317,17 +354,6 @@ print "\n"; print "===========================================================\n"; print " WebKit is now built. To run $launcherName with this newly-built\n"; print " code, use the \"$launcherPath\" script.\n"; -if ($svgSupport) { - print "\n NOTE: WebKit has been built with SVG support enabled.\n"; - print " $launcherName will have SVG viewing capabilities.\n"; -} -if ($svgAnimationSupport or $svgFiltersSupport or $svgForeignObjectSupport or $svgFontsSupport or $svgAsImageSupport or $svgUseSupport) { - print " Your build supports the following (optional) SVG features: \n"; - print " * Basic SVG animation.\n" if $svgAnimationSupport; - print " * SVG filters.\n" if $svgFiltersSupport; - print " * SVG foreign object.\n" if $svgForeignObjectSupport; - print " * SVG fonts.\n" if $svgFontsSupport; - print " * SVG as image.\n" if $svgAsImageSupport; - print " * SVG <use> support.\n" if $svgUseSupport; -} print "===========================================================\n"; + +exit 0; diff --git a/WebKitTools/Scripts/check-for-exit-time-destructors b/WebKitTools/Scripts/check-for-exit-time-destructors index 19656b5..249bd0b 100755 --- a/WebKitTools/Scripts/check-for-exit-time-destructors +++ b/WebKitTools/Scripts/check-for-exit-time-destructors @@ -58,7 +58,7 @@ my $scriptAge = -M $0; my $list = $ENV{"LINK_FILE_LIST_${variant}_${arch}"}; if (!open LIST, $list) { - print "Could not open $list\n"; + print "ERROR: Could not open $list\n"; exit 1; } @@ -74,7 +74,7 @@ for my $file (sort @files) { next if defined $fileAge && $fileAge > $buildTimestampAge; } if (!open NM, "(nm '$file' | sed 's/^/STDOUT:/') 2>&1 |") { - print "Could not open $file\n"; + print "ERROR: Could not open $file\n"; $sawError = 1; next; } @@ -96,7 +96,7 @@ for my $file (sort @files) { } if ($sawError and !$coverageBuild) { - print "Use DEFINE_STATIC_LOCAL from <wtf/StdLibExtras.h>\n"; + print "ERROR: Use DEFINE_STATIC_LOCAL from <wtf/StdLibExtras.h>\n"; unlink $executablePath; exit 1; } @@ -115,7 +115,7 @@ sub demangle($) { my ($symbol) = @_; if (!open FILT, "c++filt $symbol |") { - print "Could not open c++filt\n"; + print "ERROR: Could not open c++filt\n"; return; } my $result = <FILT>; @@ -128,7 +128,7 @@ sub printFunctions($$) { my ($shortName, $path) = @_; if (!open OTOOL, "otool -tV '$path' |") { - print "Could not open $path\n"; + print "WARNING: Could not open $path\n"; return 0; } my %functions; @@ -142,10 +142,10 @@ sub printFunctions($$) my $result = 0; for my $function (sort keys %functions) { if (!$result) { - print "$shortName has exit time destructors in it! ($path)\n"; + print "ERROR: $shortName has exit time destructors in it! ($path)\n"; $result = 1; } - print " $function\n"; + print "ERROR: In function $function\n"; } return $result; } diff --git a/WebKitTools/Scripts/check-for-global-initializers b/WebKitTools/Scripts/check-for-global-initializers index 88894be..e6c1a69 100755 --- a/WebKitTools/Scripts/check-for-global-initializers +++ b/WebKitTools/Scripts/check-for-global-initializers @@ -57,7 +57,7 @@ my $scriptAge = -M $0; my $list = $ENV{"LINK_FILE_LIST_${variant}_${arch}"}; if (!open LIST, $list) { - print "Could not open $list\n"; + print "ERROR: Could not open $list\n"; exit 1; } @@ -73,7 +73,7 @@ for my $file (sort @files) { next if defined $fileAge && $fileAge > $buildTimestampAge; } if (!open NM, "(nm '$file' | sed 's/^/STDOUT:/') 2>&1 |") { - print "Could not open $file\n"; + print "ERROR: Could not open $file\n"; $sawError = 1; next; } @@ -103,18 +103,18 @@ for my $file (sort @files) { next if $shortName eq "CachedResource.o"; next if $shortName eq "Frame.o"; next if $shortName eq "JSCustomSQLTransactionCallback.o"; - next if $shortName eq "JSEventListener.o"; + next if $shortName eq "JSLazyEventListener.o"; next if $shortName eq "Node.o"; next if $shortName eq "Page.o"; next if $shortName eq "Range.o"; + next if $shortName eq "RenderBlockLineLayout.o"; next if $shortName eq "RenderObject.o"; next if $shortName eq "SubresourceLoader.o"; next if $shortName eq "SVGElementInstance.o"; - next if $shortName eq "bidi.o"; } } - print "$shortName has a global initializer in it! ($file)\n"; + print "ERROR: $shortName has a global initializer in it! ($file)\n"; $sawError = 1; } } diff --git a/WebKitTools/Scripts/check-for-weak-vtables b/WebKitTools/Scripts/check-for-weak-vtables index d274b01..a10a236 100755 --- a/WebKitTools/Scripts/check-for-weak-vtables +++ b/WebKitTools/Scripts/check-for-weak-vtables @@ -58,7 +58,7 @@ my $sawError = 0; if (!defined $executablePathAge || !defined $buildTimestampAge || $executablePathAge > $buildTimestampAge) { if (!open NM, "(nm -m '$executablePath' | c++filt | sed 's/^/STDOUT:/') 2>&1 |") { - print "Could not open $executablePath\n"; + print "ERROR: Could not open $executablePath\n"; $sawError = 1; next; } @@ -75,10 +75,10 @@ if (!defined $executablePathAge || !defined $buildTimestampAge || $executablePat my $shortName = $executablePath; $shortName =~ s/.*\///; - print "$shortName has a weak vtable in it ($executablePath)\n"; - print "Fix by making sure the first virtual function in each of these classes is not an inline:\n"; + 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 " $class\n"; + print "ERROR: class $class\n"; } $sawError = 1; } diff --git a/WebKitTools/Scripts/check-webkit-style b/WebKitTools/Scripts/check-webkit-style new file mode 100755 index 0000000..14812a7 --- /dev/null +++ b/WebKitTools/Scripts/check-webkit-style @@ -0,0 +1,166 @@ +#!/usr/bin/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. + +"""Script to run the linter for source code of WebKit.""" + +import codecs +import os +import os.path +import sys + +import modules.cpp_style as cpp_style +from modules.diff_parser import DiffParser +from modules.scm import detect_scm_system + + +# Override the usage of the lint tool. +cpp_style._USAGE = """ +Syntax: %(program_name)s [--verbose=#] [--git-commit=<SingleCommit>] [--output=vs7] + [--filter=-x,+y,...] [file] ... + + The style guidelines this tries to follow are those in + http://webkit.org/coding/coding-style.html + + Every problem is given a confidence score from 1-5, with 5 meaning we are + certain of the problem, and 1 meaning it could be a legitimate construct. + This will miss some errors, and is not a substitute for a code review. + + To prevent specific lines from being linted, add a '// NOLINT' comment to the + end of the line. + + Linted extensions are .cpp, .c and .h. Other file types will be ignored. + + The file parameter is optional and multiple files to scan be passed in. + Leaving out the file parameter will apply the check to the files changed + according to the scm system. + + Flags: + + verbose=# + Specify a number 0-5 to restrict errors to certain verbosity levels. + + git-commit=<SingleCommit> + Checks the style of everything from the given commit to the local tree. + + output=vs7 + By default, the output is formatted to ease emacs parsing. Visual Studio + compatible output (vs7) may also be used. Other formats are unsupported. + + filter=-x,+y,... + Specify a comma-separated list of category-filters to apply: only + error messages whose category names pass the filters will be printed. + (Category names are printed with the message and look like + "[whitespace/indent]".) Filters are evaluated left to right. + "-FOO" and "FOO" means "do not print categories that start with FOO". + "+FOO" means "do print categories that start with FOO". + + Examples: --filter=-whitespace,+whitespace/braces + --filter=whitespace,runtime/printf,+runtime/printf_format + --filter=-,+build/include_what_you_use + + To see a list of all the categories used in %(program_name)s, pass no arg: + --filter= +""" % {'program_name': os.path.basename(sys.argv[0])} + + +def process_patch(patch_string): + """Does lint on a single patch. + + Args: + patch_string: A string of a patch. + """ + patch = DiffParser(patch_string.splitlines()) + for filename, diff in patch.files.iteritems(): + file_extension = os.path.splitext(filename)[1] + + if file_extension in ['.cpp', '.c', '.h']: + line_numbers = set() + + def error_for_patch(filename, line_number, category, confidence, message): + """Wrapper function of cpp_style.error for patches. + + This function outputs errors only if the line number + corresponds to lines which are modified or added. + """ + if not line_numbers: + for line in diff.lines: + # When deleted line is not set, it means that + # the line is newly added. + if not line[0]: + line_numbers.add(line[1]) + + if line_number in line_numbers: + cpp_style.error(filename, line_number, category, confidence, message) + + cpp_style.process_file(filename, error=error_for_patch) + + +def main(): + cpp_style.use_webkit_styles() + + (files, flags) = cpp_style.parse_arguments(sys.argv[1:], ["git-commit="]) + + # Change stderr to write with replacement characters so we don't die + # if we try to print something containing non-ASCII characters. + sys.stderr = codecs.StreamReaderWriter(sys.stderr, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace') + + if files and "--git-commit" in flags: + sys.stderr.write("ERROR: It is not possible to check files " + "and a specific commit at the same time.\n" + cpp_style._USAGE) + sys.exit(1) + + if files: + for filename in files: + cpp_style.process_file(filename) + + else: + cwd = os.path.abspath('.') + scm = detect_scm_system(cwd) + + if "--git-commit" in flags: + commit = flags["--git-commit"] + if '..' in commit: + # FIXME: If the range is a "...", the code should find the common ancestor and + # start there (see git diff --help for information about how ... usually works). + commit = commit[:commit.find('..')] + print >> sys.stderr, "Warning: Ranges are not supported for --git-commit. Checking all changes since %s.\n" % commit + process_patch(scm.create_patch_since_local_commit(commit)) + else: + process_patch(scm.create_patch()) + + sys.stderr.write('Total errors found: %d\n' % cpp_style.error_count()) + sys.exit(cpp_style.error_count() > 0) + + +if __name__ == "__main__": + main() diff --git a/WebKitTools/Scripts/commit-log-editor b/WebKitTools/Scripts/commit-log-editor index 939b28c..e2fc92d 100755 --- a/WebKitTools/Scripts/commit-log-editor +++ b/WebKitTools/Scripts/commit-log-editor @@ -1,6 +1,7 @@ #!/usr/bin/perl -w -# Copyright (C) 2006, 2007 Apple Inc. All rights reserved. +# Copyright (C) 2006, 2007, 2008, 2009 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 @@ -33,10 +34,28 @@ use File::Basename; use File::Spec; use FindBin; use lib $FindBin::Bin; +use Term::ReadKey; use VCSUtils; use webkitdirs; +sub normalizeLineEndings($$); + +sub usage +{ + print "Usage: [--help] [--regenerate-log] <log file>\n"; + exit 1; +} + +my $help = checkForArgumentAndRemoveFromARGV("--help"); +if ($help) { + usage(); +} + +my $regenerateLog = checkForArgumentAndRemoveFromARGV("--regenerate-log"); my $log = $ARGV[0]; +if (!$log) { + usage(); +} my $baseDir = baseProductDir(); @@ -74,18 +93,37 @@ while (<LOG>) { } } - $logContents .= $_; + if (!isGit() || /^#/) { # + $logContents .= $_; + } else { + # $_ contains the current git log message + # (without the log comment info). We don't need it. + } $existingLog = isGit() && !(/^#/ || /^\s*$/) unless $existingLog; - push @changeLogs, makeFilePathRelative($1) if $inChangesToBeCommitted && (/^M....(.*ChangeLog)$/ || /^#\tmodified: (.*ChangeLog)/) && !/-ChangeLog/; + push @changeLogs, makeFilePathRelative($1) if $inChangesToBeCommitted && (/^M....(.*ChangeLog)\r?\n?$/ || /^#\tmodified: (.*ChangeLog)/) && !/-ChangeLog/; } close LOG; +# We want to match the line endings of the existing log file in case they're +# different from perl's line endings. +my $endl = "\n"; +$endl = $1 if $logContents =~ /(\r?\n)/; + +my $keepExistingLog = 1; +if ($regenerateLog && $existingLog && scalar(@changeLogs) > 0) { + print "Existing log message detected, Use 'r' to regenerate log message from ChangeLogs, or any other key to keep the existing message.\n"; + ReadMode('cbreak'); + my $key = ReadKey(0); + 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; +exec $editor, @ARGV if $existingLog && $keepExistingLog; -my $topLevel = topLevelSourceDirectory(); +my $topLevel = determineVCSRoot(); my %changeLogSort; my %changeLogContents; @@ -93,18 +131,67 @@ for my $changeLog (@changeLogs) { open CHANGELOG, $changeLog or die "Can't open $changeLog"; my $contents = ""; my $blankLines = ""; + my $reviewedByLine = ""; + 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; + my $previousLineWasBlank = 1 unless $blankLines eq ""; + my $line = $_; + my $currentLineBlankLines = $blankLines; $blankLines = ""; - $contents .= $_; + + # Remove indentation spaces + $line =~ s/^ {8}//; + + # Save the reviewed by line + if ($line =~ m/^Reviewed by .*/) { + $reviewedByLine = $line; + next; + } + + # 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; + } + + $contents .= $currentLineBlankLines if $contents; + + # Attempt to insert the "patch by" line, after the first blank line. + if ($previousLineWasBlank && $hasAuthorInfoToWrite && $lineCount > 0) { + my $authorAndCommitterAreSamePerson = $ENV{EMAIL_ADDRESS} && $email eq $ENV{EMAIL_ADDRESS}; + if (!$authorAndCommitterAreSamePerson) { + $contents .= "Patch by $author <$email> on $date\n"; + $hasAuthorInfoToWrite = 0; + } + } + + # Attempt to insert the "reviewed by" line, after the first blank line. + if ($previousLineWasBlank && $reviewedByLine && $lineCount > 0) { + $contents .= $reviewedByLine . "\n"; + $reviewedByLine = ""; + } + + + $lineCount++; + $contents .= $line; } else { $blankLines .= $_; } } + if ($reviewedByLine) { + $contents .= "\n".$reviewedByLine; + } close CHANGELOG; $changeLog = File::Spec->abs2rel(File::Spec->rel2abs($changeLog), $topLevel); @@ -131,14 +218,30 @@ for my $changeLog (@changeLogs) { my $first = 1; open NEWLOG, ">$log.edit" or die; -for my $sortKey (sort keys %changeLogSort) { - my $label = $changeLogSort{$sortKey}; - if (keys %changeLogSort > 1) { - print NEWLOG "\n" if !$first; - $first = 0; - print NEWLOG "$label:\n\n"; +if (isGit() && scalar keys %changeLogSort == 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, "-|", "prepare-ChangeLog --git-index --no-write" or die "prepare-ChangeLog failed: $!.\n"; + while (<CHANGELOG_ENTRIES>) { + print NEWLOG normalizeLineEndings($_, $endl); + } + close CHANGELOG_ENTRIES; + } +} else { + for my $sortKey (sort keys %changeLogSort) { + my $label = $changeLogSort{$sortKey}; + if (keys %changeLogSort > 1) { + print NEWLOG normalizeLineEndings("\n", $endl) if !$first; + $first = 0; + print NEWLOG normalizeLineEndings("$label: ", $endl); + } + print NEWLOG normalizeLineEndings($changeLogContents{$label}, $endl); } - print NEWLOG $changeLogContents{$label}; } print NEWLOG $logContents; close NEWLOG; @@ -164,26 +267,9 @@ if ($foundComment) { unlink "$log.edit"; -sub topLevelSourceDirectory +sub normalizeLineEndings($$) { - if (isGit()) { - chomp(my $gitDir = `git rev-parse --git-dir`); - return dirname($gitDir); - } elsif (isSVN()) { - open(INFO, "-|", qw(svn info)) or die; - my ($root, $url); - while (my $line = <INFO>) { - if ($line =~ /^Repository Root: (.*)$/) { - $root = $1; - } elsif ($line =~ /^URL: (.*)$/) { - $url = $1; - } - } - close(INFO); - - my $path = $url; - $path =~ s/^\Q$root\E//; - $path =~ s/^\/?(branches\/[^\/]*|trunk)\/?//; - return File::Spec->rel2abs(File::Spec->catdir(map { ".." } File::Spec->splitdir($path))); - } + my ($string, $endl) = @_; + $string =~ s/\r?\n/$endl/g; + return $string; } diff --git a/WebKitTools/Scripts/do-webcore-rename b/WebKitTools/Scripts/do-webcore-rename index 6a473df..2d6ca46 100755 --- a/WebKitTools/Scripts/do-webcore-rename +++ b/WebKitTools/Scripts/do-webcore-rename @@ -68,12 +68,7 @@ sub wanted } my %renames = ( - "JSUnprotectedEventListener" => "JSEventListener", - "findJSUnprotectedEventListener" => "findJSEventListener", - "findOrCreateJSUnprotectedEventListener" => "findOrCreateJSEventListener", - "UnprotectedListenersMap" => "JSListenersMap", - "jsUnprotectedEventListeners" => "jsEventListeners", - "jsUnprotectedInlineEventListeners" => "jsInlineEventListeners", + "parseURL" => "deprecatedParseURL" ); my %renamesContemplatedForTheFuture = ( @@ -99,6 +94,7 @@ my %renamesContemplatedForTheFuture = ( "KURLMac" => "URLMac", "KURL_h" => "URL_h", + "ThreadSafeSharedBase" => "ThreadSafeRefCountedBase", "ThreadSafeShared" => "ThreadSafeRefCounted", "TreeShared" => "TreeRefCounted", @@ -136,8 +132,11 @@ my %renamesContemplatedForTheFuture = ( "m_invertibleCTM" => "m_transformIsInvertible", - "JSValuePtr" => "JSValue", - "ProtectedJSValuePtr" => "ProtectedJSValue", + "NativeFunctionWrapper_h" => "JSHostFunction_h", + "NativeFunctionWrapper" => "JSHostFunction", + "nativeFunctionThunk" => "hostFunctionThunk", + "nativeFunction" => "hostFunction", + "NativeFunction" => "HostFunction", ); # rename files diff --git a/WebKitTools/Scripts/execAppWithEnv b/WebKitTools/Scripts/execAppWithEnv new file mode 100755 index 0000000..d185e2f --- /dev/null +++ b/WebKitTools/Scripts/execAppWithEnv @@ -0,0 +1,38 @@ +#!/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/WebKitTools/Scripts/extract-localizable-strings b/WebKitTools/Scripts/extract-localizable-strings index 420624b..cf4f8f0 100755 --- a/WebKitTools/Scripts/extract-localizable-strings +++ b/WebKitTools/Scripts/extract-localizable-strings @@ -1,6 +1,6 @@ #!/usr/bin/perl -w -# Copyright (C) 2006, 2007 Apple Inc. All rights reserved. +# Copyright (C) 2006, 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 @@ -44,9 +44,11 @@ use strict; +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, LPCTSTR_UI_STRING_LOCALIZE_LATER => 1, UNLOCALIZED_STRING => 1, UNLOCALIZED_LPCTSTR => 1, dprintf => 1, NSException => 1, NSLog => 1, printf => 1 ); -@ARGV >= 1 or die "Usage: extract-localizable-strings <exceptions file> [ directory... ]\nDid you mean to run extract-webkit-localizable-strings instead?\n"; +@ARGV >= 1 or die "Usage: extract-localizable-strings <exceptions file> [ 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"; @@ -264,6 +266,29 @@ handleString: 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; @@ -274,6 +299,21 @@ 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; @@ -338,7 +378,7 @@ for my $key (sort keys %commentByKey) { } # Write out the strings file in UTF-16 with a BOM. -utf8::decode($localizedStrings) if $^V ge chr(5).chr(8); +utf8::decode($localizedStrings) if $^V ge v5.8; my $output = pack "n*", (0xFEFF, unpack "U*", $localizedStrings); if (-e "$fileToUpdate") { diff --git a/WebKitTools/Scripts/make-js-test-wrappers b/WebKitTools/Scripts/make-js-test-wrappers index 9ee8513..a030d3b 100755 --- a/WebKitTools/Scripts/make-js-test-wrappers +++ b/WebKitTools/Scripts/make-js-test-wrappers @@ -88,6 +88,7 @@ for my $tfile (@templates) { for my $file (@files) { next if $file =~ /js-test-.*\.js$/; + next if $file =~ /cookies-test-(post|pre)\.js$/; next if $file =~ /standalone-.*\.js$/; next if $file =~ /SVGTestCase\.js/; next if $file =~ /WMLTestCase\.js/; @@ -97,6 +98,7 @@ for my $tfile (@templates) { next if $file =~ m:resources/WindowProperties\.js$:; next if $file =~ m:resources/altGlyph-dom\.js$:; next if $file =~ m:resources/attr-case-sensitivity\.js$:; + next if $file =~ m:resources/box-shadow-overflow-scroll\.js$:; next if $file =~ m:resources/codegen-temporaries-multiple-global-blocks-1\.js$:; next if $file =~ m:resources/codegen-temporaries-multiple-global-blocks-2\.js$:; next if $file =~ m:resources/constructors-cached-navigate\.js$:; @@ -105,6 +107,8 @@ for my $tfile (@templates) { next if $file =~ m:resources/id-fastpath-strict\.js$:; next if $file =~ m:resources/intersectsNode\.js$:; next if $file =~ m:resources/p-in-scope\.js$:; + next if $file =~ m:resources/paste-blockquote-before-blockquote\.js$:; + next if $file =~ m:resources/reflection-overflow-scroll\.js$:; next if $file =~ m:resources/script-element-gc\.js$:; next if $file =~ m:resources/script-element-gc\.js$:; next if $file =~ m:resources/script3\.js$:; @@ -116,8 +120,14 @@ for my $tfile (@templates) { next if $file =~ m:resources/tabindex-focus-blur-all\.js$:; next if $file =~ m:resources/use-instanceRoot-event-bubbling\.js$:; next if $file =~ m:resources/use-instanceRoot-event-listeners\.js$:; + next if $file =~ m:resources/window-properties\.js$:; next if $file =~ m:resources/wrapper-identity-base\.js$:; next if $file =~ m:resources/xhtml-scripts\.js$:; + next if $file =~ m:resources/instanceof-operator-dummy-worker\.js$:; + next if $file =~ m:resources/json2-es5-compat\.js$:; + next if $file =~ m:resources/JSON-stringify\.js$:; + next if $file =~ m:resources/JSON-parse\.js$:; + next if $file =~ m:resources/textarea-input-event\.js$:; my $html = $file; $html =~ s:resources/(.*)\.js:$1.html:; diff --git a/WebKitTools/Scripts/modules/BeautifulSoup.py b/WebKitTools/Scripts/modules/BeautifulSoup.py new file mode 100644 index 0000000..34204e7 --- /dev/null +++ b/WebKitTools/Scripts/modules/BeautifulSoup.py @@ -0,0 +1,2000 @@ +"""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-2009, 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.1.0.1" +__copyright__ = "Copyright (c) 2004-2009 Leonard Richardson" +__license__ = "New-style BSD" + +import codecs +import markupbase +import types +import re +from HTMLParser import HTMLParser, HTMLParseError +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 +markupbase._declname_match = re.compile(r'[a-zA-Z][-_.:a-zA-Z0-9]*\s*').match + +DEFAULT_OUTPUT_ENCODING = "utf-8" + +# First, the classes that represent markup elements. + +def sob(unicode, encoding): + """Returns either the given Unicode string or its encoding.""" + if encoding is None: + return unicode + else: + return unicode.encode(encoding) + +class PageElement: + """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.contents.index(self) + if hasattr(replaceWith, 'parent') and replaceWith.parent == self.parent: + # We're replacing this element with one of its siblings. + index = self.parent.contents.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 extract(self): + """Destructively rips this element out of the tree.""" + if self.parent: + try: + self.parent.contents.remove(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) + or isinstance(newChild, unicode)) \ + and not isinstance(newChild, NavigableString): + newChild = NavigableString(newChild) + + position = min(position, len(self.contents)) + if hasattr(newChild, 'parent') and newChild.parent != None: + # We're 'inserting' an element that's already one + # of this object's children. + if newChild.parent == self: + index = self.find(newChild) + if index and 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 + else: + # Build a SoupStrainer + 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: + i = i.next + yield i + + def nextSiblingGenerator(self): + i = self + while i: + i = i.nextSibling + yield i + + def previousGenerator(self): + i = self + while i: + i = i.previous + yield i + + def previousSiblingGenerator(self): + i = self + while i: + i = i.previousSibling + yield i + + def parentGenerator(self): + i = self + while i: + 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 (unicode(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 encode(self, encoding=DEFAULT_OUTPUT_ENCODING): + return self.decode().encode(encoding) + + def decodeGivenEventualEncoding(self, eventualEncoding): + return self + +class CData(NavigableString): + + def decodeGivenEventualEncoding(self, eventualEncoding): + return u'<![CDATA[' + self + u']]>' + +class ProcessingInstruction(NavigableString): + + def decodeGivenEventualEncoding(self, eventualEncoding): + output = self + if u'%SOUP-ENCODING%' in output: + output = self.substituteEncoding(output, eventualEncoding) + return u'<?' + output + u'?>' + +class Comment(NavigableString): + def decodeGivenEventualEncoding(self, eventualEncoding): + return u'<!--' + self + u'-->' + +class Declaration(NavigableString): + def decodeGivenEventualEncoding(self, eventualEncoding): + return u'<!' + self + u'>' + +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'&%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 == None: + attrs = [] + 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 + + def convert(kval): + "Converts HTML, XML and numeric entities in the attribute value." + k, val = kval + if val is None: + return kval + return (k, re.sub("&(#\d+|#x[0-9a-fA-F]+|\w+);", + self._convertEntities, val)) + self.attrs = map(convert, self.attrs) + + 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 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 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.decode(eventualEncoding=encoding) + + 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 __unicode__(self): + return self.decode() + + def __str__(self): + return self.encode() + + def encode(self, encoding=DEFAULT_OUTPUT_ENCODING, + prettyPrint=False, indentLevel=0): + return self.decode(prettyPrint, indentLevel, encoding).encode(encoding) + + def decode(self, prettyPrint=False, indentLevel=0, + eventualEncoding=DEFAULT_OUTPUT_ENCODING): + """Returns a string or Unicode representation of this tag and + its contents. To get Unicode, pass None for encoding.""" + + attrs = [] + if self.attrs: + for key, val in self.attrs: + fmt = '%s="%s"' + if isString(val): + if (self.containsSubstitutions + and eventualEncoding is not None + and '%SOUP-ENCODING%' in val): + val = self.substituteEncoding(val, eventualEncoding) + + # 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) + if val is None: + # Handle boolean attributes. + decoded = key + else: + decoded = fmt % (key, val) + attrs.append(decoded) + close = '' + closeTag = '' + if self.isSelfClosing: + close = ' /' + else: + closeTag = '</%s>' % self.name + + indentTag, indentContents = 0, 0 + if prettyPrint: + indentTag = indentLevel + space = (' ' * (indentTag-1)) + indentContents = indentTag + 1 + contents = self.decodeContents(prettyPrint, indentContents, + eventualEncoding) + if self.hidden: + s = contents + else: + s = [] + attributeString = '' + if attrs: + attributeString = ' ' + ' '.join(attrs) + if prettyPrint: + s.append(space) + s.append('<%s%s%s>' % (self.name, 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.""" + contents = [i for i in self.contents] + for i in contents: + if isinstance(i, Tag): + i.decompose() + else: + i.extract() + self.extract() + + def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING): + return self.encode(encoding, True) + + def encodeContents(self, encoding=DEFAULT_OUTPUT_ENCODING, + prettyPrint=False, indentLevel=0): + return self.decodeContents(prettyPrint, indentLevel).encode(encoding) + + def decodeContents(self, prettyPrint=False, indentLevel=0, + eventualEncoding=DEFAULT_OUTPUT_ENCODING): + """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.decodeGivenEventualEncoding(eventualEncoding) + elif isinstance(c, Tag): + s.append(c.decode(prettyPrint, indentLevel, eventualEncoding)) + 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. Will go away in 4.0. + 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) + + # 3.x compatibility methods. Will go away in 4.0. + def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING, + prettyPrint=False, indentLevel=0): + if encoding is None: + return self.decodeContents(prettyPrint, indentLevel, encoding) + else: + return self.encodeContents(encoding, prettyPrint, indentLevel) + + + #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 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 + + def childGenerator(self): + if not len(self.contents): + raise StopIteration + current = self.contents[0] + while current: + yield current + current = current.nextSibling + raise StopIteration + +# 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 isString(attrs): + kwargs['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 isList(markup) 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 \ + isString(markup): + 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 == True and type(matchAgainst) == types.BooleanType: + result = markup != 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 is not None and not isString(markup): + 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 (isList(matchAgainst) + and (markup is not None or not isString(matchAgainst))): + result = markup in matchAgainst + elif hasattr(matchAgainst, 'items'): + result = markup.has_key(matchAgainst) + elif matchAgainst and isString(markup): + 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 isList(l): + """Convenience method that works with all 2.x versions of Python + to determine whether or not something is listlike.""" + return ((hasattr(l, '__iter__') and not isString(l)) + or (type(l) in (types.ListType, types.TupleType))) + +def isString(s): + """Convenience method that works with all 2.x versions of Python + to determine whether or not something is stringlike.""" + try: + return isinstance(s, unicode) or isinstance(s, basestring) + except NameError: + return isinstance(s, str) + +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 isList(portion) and not isString(portion): + #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 HTMLParserBuilder(HTMLParser): + + def __init__(self, soup): + HTMLParser.__init__(self) + self.soup = soup + + # We inherit feed() and reset(). + + def handle_starttag(self, name, attrs): + if name == 'meta': + self.soup.extractCharsetFromMeta(attrs) + else: + self.soup.unknown_starttag(name, attrs) + + def handle_endtag(self, name): + self.soup.unknown_endtag(name) + + def handle_data(self, content): + self.soup.handle_data(content) + + def _toStringSubclass(self, text, subclass): + """Adds a certain piece of text to the tree as a NavigableString + subclass.""" + self.soup.endData() + self.handle_data(text) + self.soup.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.soup.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.soup.convertHTMLEntities: + try: + data = unichr(name2codepoint[ref]) + except KeyError: + pass + + if not data and self.soup.convertXMLEntities: + data = self.soup.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref) + + if not data and self.soup.convertHTMLEntities and \ + not self.soup.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 = "&%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 = HTMLParser.parse_declaration(self, i) + except HTMLParseError: + toHandle = self.rawdata[i:] + self.handle_data(toHandle) + j = i + len(toHandle) + return j + + +class BeautifulStoneSoup(Tag): + + """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, + builder=HTMLParserBuilder): + """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. + + HTMLParser will process most bad HTML, and the BeautifulSoup + class has some tricks for dealing with some HTML that kills + HTMLParser, 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 HTMLParser: + + <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) + self.builder = builder(self) + self.reset() + + 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. + self.builder = None # So can the builder. + + 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 isList(self.markupMassage): + 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.builder.reset() + + self.builder.feed(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 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 + self.builder.reset() + self.currentData = [] + self.currentTag = None + self.tagStack = [] + self.quoteStack = [] + self.pushTag(self) + + def popTag(self): + tag = self.tagStack.pop() + # Tags with just one string-owning child get the child as a + # 'string' property, so that soup.tag.string is shorthand for + # soup.tag.contents[0] + if len(self.currentTag.contents) == 1 and \ + isinstance(self.currentTag.contents[0], NavigableString): + self.currentTag.string = self.currentTag.contents[0] + + #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 != None + and p.name in nestingResetTriggers) \ + or (nestingResetTriggers == 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(map(lambda(x, y): ' %s="%s"' % (x, y), 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 extractCharsetFromMeta(self, attrs): + self.unknown_starttag('meta', attrs) + + +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']) + + 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 extractCharsetFromMeta(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, match): + """Changes a MS smart quote character to an XML or HTML + entity.""" + orig = match.group(1) + sub = self.MS_CHARS.get(orig) + if type(sub) == types.TupleType: + if self.smartQuotesTo == 'xml': + sub = '&#x'.encode() + sub[1].encode() + ';'.encode() + else: + sub = '&'.encode() + sub[0].encode() + ';'.encode() + else: + sub = sub.encode() + 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"): + smart_quotes_re = "([\x80-\x9f])" + smart_quotes_compiled = re.compile(smart_quotes_re) + markup = smart_quotes_compiled.sub(self._subMSChar, 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_re = '^<\?.*encoding=[\'"](.*?)[\'"].*\?>'.encode() + xml_encoding_match = re.compile(xml_encoding_re).match(xml_data) + if not xml_encoding_match and isHTML: + meta_re = '<\s*meta[^>]+charset=([^>]*?)[;\'">]'.encode() + regexp = re.compile(meta_re, re.I) + xml_encoding_match = regexp.search(xml_data) + if xml_encoding_match is not None: + xml_encoding = xml_encoding_match.groups()[0].decode( + 'ascii').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/WebKitTools/Scripts/modules/__init__.py b/WebKitTools/Scripts/modules/__init__.py new file mode 100644 index 0000000..ef65bee --- /dev/null +++ b/WebKitTools/Scripts/modules/__init__.py @@ -0,0 +1 @@ +# Required for Python to search this directory for module files diff --git a/WebKitTools/Scripts/modules/bugzilla.py b/WebKitTools/Scripts/modules/bugzilla.py new file mode 100644 index 0000000..1eebe9d --- /dev/null +++ b/WebKitTools/Scripts/modules/bugzilla.py @@ -0,0 +1,387 @@ +# 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. +# +# WebKit's Python module for interacting with Bugzilla + +import getpass +import platform +import re +import subprocess +import urllib2 + +from datetime import datetime # used in timestamp() + +# Import WebKit-specific modules. +from modules.logging import error, log +from modules.committers import CommitterList + +# WebKit includes a built copy of BeautifulSoup in Scripts/modules +# so this import should always succeed. +from .BeautifulSoup import BeautifulSoup + +try: + from mechanize import Browser +except ImportError, e: + print """ +mechanize is required. + +To install: +sudo easy_install mechanize + +Or from the web: +http://wwwsearch.sourceforge.net/mechanize/ +""" + exit(1) + +def credentials_from_git(): + return [read_config("username"), read_config("password")] + +def credentials_from_keychain(username=None): + if not is_mac_os_x(): + return [username, None] + + command = "/usr/bin/security %s -g -s %s" % ("find-internet-password", Bugzilla.bug_server_host) + if username: + command += " -a %s" % username + + log('Reading Keychain for %s account and password. Click "Allow" to continue...' % Bugzilla.bug_server_host) + keychain_process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) + value = keychain_process.communicate()[0] + exit_code = keychain_process.wait() + + if exit_code: + return [username, None] + + match = re.search('^\s*"acct"<blob>="(?P<username>.+)"', value, re.MULTILINE) + if match: + username = match.group('username') + + password = None + match = re.search('^password: "(?P<password>.+)"', value, re.MULTILINE) + if match: + password = match.group('password') + + return [username, password] + +def is_mac_os_x(): + return platform.mac_ver()[0] + +# FIXME: This should not depend on git for config storage +def read_config(key): + # Need a way to read from svn too + config_process = subprocess.Popen("git config --get bugzilla." + key, stdout=subprocess.PIPE, shell=True) + value = config_process.communicate()[0] + return_code = config_process.wait() + + if return_code: + return None + return value.rstrip('\n') + +def read_credentials(): + (username, password) = credentials_from_git() + + if not username or not password: + (username, password) = credentials_from_keychain(username) + + if not username: + username = raw_input("Bugzilla login: ") + if not password: + password = getpass.getpass("Bugzilla password for %s: " % username) + + return [username, password] + +def timestamp(): + return datetime.now().strftime("%Y%m%d%H%M%S") + +class Bugzilla: + def __init__(self, dryrun=False, committers=CommitterList()): + self.dryrun = dryrun + self.authenticated = False + + self.browser = Browser() + # Ignore bugs.webkit.org/robots.txt until we fix it to allow this script + self.browser.set_handle_robots(False) + self.committers = committers + + # Defaults (until we support better option parsing): + bug_server_host = "bugs.webkit.org" + bug_server_regex = "https?://%s/" % re.sub('\.', '\\.', bug_server_host) + bug_server_url = "https://%s/" % bug_server_host + + def bug_url_for_bug_id(self, bug_id, xml=False): + content_type = "&ctype=xml" if xml else "" + return "%sshow_bug.cgi?id=%s%s" % (self.bug_server_url, bug_id, content_type) + + def attachment_url_for_id(self, attachment_id, action="view"): + action_param = "" + if action and action != "view": + action_param = "&action=" + action + return "%sattachment.cgi?id=%s%s" % (self.bug_server_url, attachment_id, action_param) + + 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'] = str(element.find('attachid').string) + attachment['url'] = self.attachment_url_for_id(attachment['id']) + attachment['name'] = unicode(element.find('desc').string) + attachment['type'] = str(element.find('type').string) + + review_flag = element.find('flag', attrs={"name" : "review"}) + if review_flag and review_flag['status'] == '+': + reviewer_email = review_flag['setter'] + reviewer = self.committers.reviewer_by_bugzilla_email(reviewer_email) + attachment['reviewer'] = reviewer.full_name + + commit_queue_flag = element.find('flag', attrs={"name" : "commit-queue"}) + if commit_queue_flag and commit_queue_flag['status'] == '+': + committer_email = commit_queue_flag['setter'] + committer = self.committers.committer_by_bugzilla_email(committer_email) + attachment['commit-queue'] = committer.full_name + + return attachment + + def fetch_attachments_from_bug(self, bug_id): + bug_url = self.bug_url_for_bug_id(bug_id, xml=True) + log("Fetching: " + bug_url) + + page = urllib2.urlopen(bug_url) + soup = BeautifulSoup(page) + + attachments = [] + for element in soup.findAll('attachment'): + attachment = self._parse_attachment_element(element, bug_id) + attachments.append(attachment) + return attachments + + def fetch_patches_from_bug(self, bug_id): + patches = [] + for attachment in self.fetch_attachments_from_bug(bug_id): + if attachment['is_patch'] and not attachment['is_obsolete']: + patches.append(attachment) + return patches + + def fetch_reviewed_patches_from_bug(self, bug_id): + reviewed_patches = [] + for attachment in self.fetch_attachments_from_bug(bug_id): + if 'reviewer' in attachment and not attachment['is_obsolete']: + reviewed_patches.append(attachment) + return reviewed_patches + + def fetch_commit_queue_patches_from_bug(self, bug_id): + commit_queue_patches = [] + for attachment in self.fetch_reviewed_patches_from_bug(bug_id): + if 'commit-queue' in attachment and not attachment['is_obsolete']: + commit_queue_patches.append(attachment) + return commit_queue_patches + + def fetch_bug_ids_from_commit_queue(self): + commit_queue_url = self.bug_server_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" + + page = urllib2.urlopen(commit_queue_url) + soup = BeautifulSoup(page) + + bug_ids = [] + # Grab the cells in the first column (which happens to be the bug ids) + for bug_link_cell in soup('td', "first-child"): # tds with the class "first-child" + bug_link = bug_link_cell.find("a") + bug_ids.append(bug_link.string) # the contents happen to be the bug id + + return bug_ids + + def fetch_patches_from_commit_queue(self): + patches_to_land = [] + for bug_id in self.fetch_bug_ids_from_commit_queue(): + patches = self.fetch_commit_queue_patches_from_bug(bug_id) + patches_to_land += patches + return patches_to_land + + def authenticate(self): + if self.authenticated: + return + + if self.dryrun: + log("Skipping log in for dry run...") + self.authenticated = True + return + + (username, password) = read_credentials() + + log("Logging in as %s..." % username) + self.browser.open(self.bug_server_url + "index.cgi?GoAheadAndLogIn=1") + self.browser.select_form(name="login") + self.browser['Bugzilla_login'] = username + self.browser['Bugzilla_password'] = password + 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): + # FIXME: We could add the ability to try again on failure. + raise ScriptError("Bugzilla login failed: %s" % match.group(1)) + + self.authenticated = True + + def add_patch_to_bug(self, bug_id, patch_file_object, description, comment_text=None, mark_for_review=False): + self.authenticate() + + log('Adding patch "%s" to bug %s' % (description, bug_id)) + if self.dryrun: + log(comment_text) + return + + self.browser.open(self.bug_server_url + "attachment.cgi?action=enter&bugid=" + bug_id) + self.browser.select_form(name="entryform") + self.browser['description'] = description + self.browser['ispatch'] = ("1",) + if comment_text: + log(comment_text) + self.browser['comment'] = comment_text + self.browser['flag_type-1'] = ('?',) if mark_for_review else ('X',) + self.browser.add_file(patch_file_object, "text/plain", "bug-%s-%s.patch" % (bug_id, timestamp())) + self.browser.submit() + + def prompt_for_component(self, components): + log("Please pick a component:") + i = 0 + for name in components: + i += 1 + log("%2d. %s" % (i, name)) + result = int(raw_input("Enter a number: ")) - 1 + return components[result] + + 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 ScriptError("Bug not created: %s" % error_message) + + def create_bug_with_patch(self, bug_title, bug_description, component, patch_file_object, patch_description, cc, mark_for_review=False): + self.authenticate() + + log('Creating bug with patch description "%s"' % patch_description) + if self.dryrun: + log(bug_description) + return + + self.browser.open(self.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 or component not in component_names: + component = self.prompt_for_component(component_names) + self.browser['component'] = [component] + self.browser['cc'] = cc + self.browser['short_desc'] = bug_title + if bug_description: + log(bug_description) + self.browser['comment'] = bug_description + self.browser['description'] = patch_description + self.browser['ispatch'] = ("1",) + self.browser['flag_type-1'] = ('?',) if mark_for_review else ('X',) + self.browser.add_file(patch_file_object, "text/plain", "%s.patch" % timestamp(), 'data') + response = self.browser.submit() + + bug_id = self._check_create_bug_response(response.read()) + log("Bug %s created." % bug_id) + log(self.bug_server_url + "show_bug.cgi?id=" + bug_id) + return bug_id + + def clear_attachment_review_flag(self, attachment_id, additional_comment_text=None): + self.authenticate() + + comment_text = "Clearing review flag on attachment: %s" % attachment_id + if additional_comment_text: + comment_text += "\n\n" + additional_comment_text + log(comment_text) + + if self.dryrun: + return + + 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.browser.find_control(type='select', nr=0).value = ("X",) + self.browser.submit() + + def obsolete_attachment(self, attachment_id, comment_text = None): + self.authenticate() + + log("Obsoleting attachment: %s" % attachment_id) + if self.dryrun: + log(comment_text) + return + + 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.browser.find_control(type='select', nr=0).value = ("X",) + if comment_text: + log(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 post_comment_to_bug(self, bug_id, comment_text): + self.authenticate() + + log("Adding comment to bug %s" % bug_id) + if self.dryrun: + log(comment_text) + return + + self.browser.open(self.bug_url_for_bug_id(bug_id)) + self.browser.select_form(name="changeform") + self.browser['comment'] = comment_text + self.browser.submit() + + def close_bug_as_fixed(self, bug_id, comment_text=None): + self.authenticate() + + log("Closing bug %s as fixed" % bug_id) + if self.dryrun: + log(comment_text) + return + + self.browser.open(self.bug_url_for_bug_id(bug_id)) + self.browser.select_form(name="changeform") + if comment_text: + log(comment_text) + self.browser['comment'] = comment_text + self.browser['bug_status'] = ['RESOLVED'] + self.browser['resolution'] = ['FIXED'] + self.browser.submit() diff --git a/WebKitTools/Scripts/modules/bugzilla_unittest.py b/WebKitTools/Scripts/modules/bugzilla_unittest.py new file mode 100644 index 0000000..1e52140 --- /dev/null +++ b/WebKitTools/Scripts/modules/bugzilla_unittest.py @@ -0,0 +1,90 @@ +# 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 unittest + +from modules.committers import CommitterList, Reviewer, Committer +from modules.bugzilla import Bugzilla + +from modules.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 = { + '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", + 'reviewer' : 'Test One', + 'commit-queue' : 'Test Two' + } + + def test_attachment_parsing(self): + reviewer = Reviewer('Test One', 'one@test.com') + committer = Committer('Test Two', 'two@test.com') + committer_list = CommitterList(committers=[committer], reviewers=[reviewer]) + bugzilla = Bugzilla(committers=committer_list) + + 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) + + for key, expected_value in self._expected_example_attachment_parsing.items(): + self.assertEquals(attachment[key], expected_value, ("Failure for key: %s: Actual='%s' Expected='%s'" % (key, attachment[key], expected_value))) + +if __name__ == '__main__': + unittest.main() diff --git a/WebKitTools/Scripts/modules/commiters_unittest.py b/WebKitTools/Scripts/modules/commiters_unittest.py new file mode 100644 index 0000000..d221c8b --- /dev/null +++ b/WebKitTools/Scripts/modules/commiters_unittest.py @@ -0,0 +1,52 @@ +# 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 unittest +from committers import CommitterList, Committer, Reviewer + +class CommittersTest(unittest.TestCase): + + def test_committer_lookup(self): + committer = Committer('Test One', 'one@test.com') + reviewer = Reviewer('Test Two', 'two@test.com') + committer_list = CommitterList(committers=[committer], reviewers=[reviewer]) + + # Test valid committer and reviewer lookup + self.assertEqual(committer_list.committer_by_bugzilla_email('one@test.com'), committer) + self.assertEqual(committer_list.reviewer_by_bugzilla_email('two@test.com'), reviewer) + self.assertEqual(committer_list.committer_by_bugzilla_email('two@test.com'), reviewer) + + # Test that a known committer is not returned during reviewer lookup + self.assertRaises(Exception, committer_list.reviewer_by_bugzilla_email, 'one@test.com') + + # Test that unknown email address fail both committer and reviewer lookup + self.assertRaises(Exception, committer_list.committer_by_bugzilla_email, 'bar@bar.com') + self.assertRaises(Exception, committer_list.reviewer_by_bugzilla_email, 'bar@bar.com') + +if __name__ == '__main__': + unittest.main() diff --git a/WebKitTools/Scripts/modules/committers.py b/WebKitTools/Scripts/modules/committers.py new file mode 100644 index 0000000..6a7f436 --- /dev/null +++ b/WebKitTools/Scripts/modules/committers.py @@ -0,0 +1,123 @@ +# 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 committer and reviewer validation + +class Committer: + def __init__(self, name, email): + self.full_name = name + self.bugzilla_email = email + self.can_review = False + + def __str__(self): + return '"%s" <%s>' % (self.full_name, self.bugzilla_email) + +class Reviewer(Committer): + def __init__(self, name, email): + Committer.__init__(self, name, email) + self.can_review = True + +# All reviewers are committers, so this list is only of committers +# who are not reviewers. +committers_unable_to_review = [ + Committer("Albert J. Wong", "ajwong@chromium.org"), + Committer("Ben Murdoch", "benm@google.com"), + Committer("Jeremy Orlow", "jorlow@chromium.org"), + Committer("Peter Kasting", "pkasting@google.com"), + Committer("Pierre d'Herbemont", "pdherbemont@free.fr"), + Committer("Shinichiro Hamaji", "hamaji@google.com"), + Committer("Zoltan Horvath", "hzoltan@inf.u-szeged.hu"), +] + +reviewers_list = [ + Reviewer("Adam Barth", "abarth@webkit.org"), + Reviewer("Adam Roben", "aroben@apple.com"), + Reviewer("Adam Treat", "treat@kde.org"), + Reviewer("Adele Peterson", "adele@apple.com"), + Reviewer("Alexey Proskuryakov", "ap@webkit.org"), + Reviewer("Anders Carlsson", "andersca@apple.com"), + Reviewer("Antti Koivisto", "koivisto@iki.fi"), + Reviewer("Ariya Hidayat", "ariya.hidayat@trolltech.com"), + Reviewer("Brady Eidson", "beidson@apple.com"), + Reviewer("Dan Bernstein", "mitz@webkit.org"), + Reviewer("Darin Adler", "darin@apple.com"), + Reviewer("Darin Fisher", "fishd@chromium.org"), + Reviewer("David Hyatt", "hyatt@apple.com"), + Reviewer("David Kilzer", "ddkilzer@webkit.org"), + Reviewer("David Levin", "levin@chromium.org"), + Reviewer("Dimitri Glazkov", "dglazkov@chromium.org"), + Reviewer("Eric Seidel", "eric@webkit.org"), + Reviewer("Gavin Barraclough", "barraclough@apple.com"), + Reviewer("George Staikos", "staikos@kde.org"), + Reviewer("Gustavo Noronha", "gns@gnome.org"), + Reviewer("Holger Freyther", "zecke@selfish.org"), + Reviewer("Jan Alonzo", "jmalonzo@gmail.com"), + Reviewer("Justin Garcia", "justin.garcia@apple.com"), + Reviewer("Kevin McCullough", "kmccullough@apple.com"), + Reviewer("Kevin Ollivier", "kevino@theolliviers.com"), + Reviewer("Maciej Stachowiak", "mjs@apple.com"), + Reviewer("Mark Rowe", "mrowe@apple.com"), + Reviewer("Nikolas Zimmermann", "zimmermann@kde.org"), + Reviewer("Oliver Hunt", "oliver@apple.com"), + Reviewer("Sam Weinig", "sam@webkit.org"), + Reviewer("Simon Fraser", "simon.fraser@apple.com"), + Reviewer("Simon Hausmann", "hausmann@webkit.org"), + Reviewer("Steve Falkenburg", "sfalken@apple.com"), + Reviewer("Timothy Hatcher", "timothy@hatcher.name"), + Reviewer(u'Tor Arne Vestb\xf8', "vestbo@webkit.org"), + Reviewer("Xan Lopez", "xan.lopez@gmail.com"), +] + + +class CommitterList: + # Committers and reviewers are passed in to allow easy testing + def __init__(self, committers=committers_unable_to_review, reviewers=reviewers_list): + self._committers = committers + reviewers + self._reviewers = reviewers + self._committers_by_email = {} + + def committers(self): + return self._committers + + def _email_to_committer_map(self): + if not len(self._committers_by_email): + for committer in self._committers: + self._committers_by_email[committer.bugzilla_email] = committer + return self._committers_by_email + + def committer_by_bugzilla_email(self, bugzilla_email): + committer = self._email_to_committer_map().get(bugzilla_email) + if not committer: + raise Exception("Unknown committer: %s" % bugzilla_email) + return committer + + def reviewer_by_bugzilla_email(self, bugzilla_email): + committer = self.committer_by_bugzilla_email(bugzilla_email) + if not committer.can_review: + raise Exception("Committer %s does not have review rights." % committer) + return committer diff --git a/WebKitTools/Scripts/modules/cpp_style.py b/WebKitTools/Scripts/modules/cpp_style.py new file mode 100644 index 0000000..86c0401 --- /dev/null +++ b/WebKitTools/Scripts/modules/cpp_style.py @@ -0,0 +1,3147 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Copyright (C) 2009 Google Inc. All rights reserved. +# Copyright (C) 2009 Torch Mobile 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. + +# This is the modified version of Google's cpplint. The original code is +# http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py + +"""Does WebKit-lint on c++ 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. + +In particular, we can get very confused by /* and // inside strings! +We do a small hack, which is to ignore //'s with "'s after them on the +same line, but it is far from perfect (in either direction). +""" + +import codecs +import getopt +import math # for log +import os +import os.path +import re +import sre_compile +import string +import sys +import unicodedata + + +_USAGE = """ +Syntax: %(program_name)s [--verbose=#] [--output=vs7] [--filter=-x,+y,...] + <file> [file] ... + + The style guidelines this tries to follow are those in + http://webkit.org/coding/coding-style.html + + Every problem is given a confidence score from 1-5, with 5 meaning we are + certain of the problem, and 1 meaning it could be a legitimate construct. + This will miss some errors, and is not a substitute for a code review. + + To prevent specific lines from being linted, add a '// NOLINT' comment to the + end of the line. + + The files passed in will be linted; at least one file must be provided. + Linted extensions are .cpp, .c and .h. Other file types will be ignored. + + Flags: + + output=vs7 + By default, the output is formatted to ease emacs parsing. Visual Studio + compatible output (vs7) may also be used. Other formats are unsupported. + + verbose=# + Specify a number 0-5 to restrict errors to certain verbosity levels. + + filter=-x,+y,... + Specify a comma-separated list of category-filters to apply: only + error messages whose category names pass the filters will be printed. + (Category names are printed with the message and look like + "[whitespace/indent]".) Filters are evaluated left to right. + "-FOO" and "FOO" means "do not print categories that start with FOO". + "+FOO" means "do print categories that start with FOO". + + Examples: --filter=-whitespace,+whitespace/braces + --filter=whitespace,runtime/printf,+runtime/printf_format + --filter=-,+build/include_what_you_use + + To see a list of all the categories used in %(program_name)s, pass no arg: + --filter= +""" % {'program_name': sys.argv[0]} + +# We categorize each error message we print. Here are the categories. +# We want an explicit list so we can list them all in cpp_style --filter=. +# If you add a new error message with a new category, add it to the list +# here! cpp_style_unittest.py should tell you if you forget to do this. +# \ used for clearer layout -- pylint: disable-msg=C6013 +_ERROR_CATEGORIES = '''\ + 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 + legal/copyright + readability/braces + readability/casting + readability/check + readability/comparison_to_zero + readability/constructors + readability/control_flow + readability/fn_size + readability/function + readability/multiline_comment + readability/multiline_string + readability/null + readability/streams + readability/todo + readability/utf8 + runtime/arrays + runtime/casting + runtime/explicit + runtime/int + runtime/init + runtime/invalid_increment + runtime/memset + runtime/printf + runtime/printf_format + runtime/references + runtime/rtti + runtime/sizeof + runtime/string + runtime/threadsafe_fn + runtime/virtual + whitespace/blank_line + whitespace/braces + whitespace/comma + whitespace/comments + whitespace/declaration + whitespace/end_of_line + whitespace/ending_newline + whitespace/indent + whitespace/labels + whitespace/line_length + whitespace/newline + whitespace/operators + whitespace/parens + whitespace/semicolon + whitespace/tab + whitespace/todo +''' + +# The default state of the category filter. This is overrided by the --filter= +# flag. By default all errors are on, so only add here categories that should be +# off by default (i.e., categories that must be enabled by the --filter= flags). +# All entries here should start with a '-' or '+', as in the --filter= flag. +_DEFAULT_FILTERS = [] + +# 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 + + +_regexp_compile_cache = {} + + +def match(pattern, s): + """Matches the string with the pattern, caching the compiled regexp.""" + # The regexp compilation caching is inlined in both match and search for + # performance reasons; factoring it out into a separate function turns out + # to be noticeably expensive. + 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) + + +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', + } + _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): + """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.' + + 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: + error_message = before_error_message + self._section = self._OTHER_SECTION + + return error_message + + +class _CppStyleState(object): + """Maintains module-wide state..""" + + def __init__(self): + self.verbose_level = 1 # global setting. + self.error_count = 0 # global count of reported errors + # filters to apply when emitting error messages + self.filters = _DEFAULT_FILTERS[:] + + # output format: + # "emacs" - format that emacs can parse (default) + # "vs7" - format that Microsoft Visual Studio 7 can parse + self.output_format = 'emacs' + + def set_output_format(self, output_format): + """Sets the output format for errors.""" + self.output_format = output_format + + def set_verbose_level(self, level): + """Sets the module's verbosity, and returns the previous setting.""" + last_verbose_level = self.verbose_level + self.verbose_level = level + return last_verbose_level + + def set_filters(self, filters): + """Sets the error-message filters. + + These filters are applied when deciding whether to emit a given + error message. + + Args: + filters: A string of comma-separated filters (eg "+whitespace/indent"). + Each filter should start with + or -; else we die. + + Raises: + ValueError: The comma-separated filters did not all start with '+' or '-'. + E.g. "-,+whitespace,-whitespace/indent,whitespace/badfilter" + """ + # Default filters always have less priority than the flag ones. + self.filters = _DEFAULT_FILTERS[:] + for filter in filters.split(','): + clean_filter = filter.strip() + if clean_filter: + self.filters.append(clean_filter) + for filter in self.filters: + if not (filter.startswith('+') or filter.startswith('-')): + raise ValueError('Every filter in --filter must start with ' + '+ or - (%s does not)' % filter) + + def reset_error_count(self): + """Sets the module's error statistic back to zero.""" + self.error_count = 0 + + def increment_error_count(self): + """Bumps the module's error statistic.""" + self.error_count += 1 + + +_cpp_style_state = _CppStyleState() + + +def _output_format(): + """Gets the module's output format.""" + return _cpp_style_state.output_format + + +def _set_output_format(output_format): + """Sets the module's output format.""" + _cpp_style_state.set_output_format(output_format) + + +def _verbose_level(): + """Returns the module's verbosity setting.""" + return _cpp_style_state.verbose_level + + +def _set_verbose_level(level): + """Sets the module's verbosity, and returns the previous setting.""" + return _cpp_style_state.set_verbose_level(level) + + +def _filters(): + """Returns the module's list of output filters, as a list.""" + return _cpp_style_state.filters + + +def _set_filters(filters): + """Sets the module's error-message filters. + + These filters are applied when deciding whether to emit a given + error message. + + Args: + filters: A string of comma-separated filters (eg "whitespace/indent"). + Each filter should start with + or -; else we die. + """ + _cpp_style_state.set_filters(filters) + + +def error_count(): + """Returns the global count of reported errors.""" + return _cpp_style_state.error_count + + +class _FunctionState(object): + """Tracks current function name and the number of lines in its body.""" + + _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc. + _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER. + + def __init__(self): + self.in_a_function = False + self.lines_in_function = 0 + self.current_function = '' + + def begin(self, function_name): + """Start analyzing function body. + + Args: + function_name: The name of the function being tracked. + """ + self.in_a_function = True + self.lines_in_function = 0 + self.current_function = function_name + + def count(self): + """Count line in current function body.""" + if self.in_a_function: + self.lines_in_function += 1 + + def check(self, error, filename, line_number): + """Report if too many lines in function body. + + Args: + error: The function to call with any errors found. + filename: The name of the current file. + 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 ** _verbose_level() + + 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(filename, 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 analizing 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? Try to find a git 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"))): + root_dir = os.path.dirname(root_dir) + if os.path.exists(os.path.join(root_dir, ".git")): + 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') + + +def _should_print_error(category, confidence): + """Returns true iff confidence >= verbose, and category passes filter.""" + # There are two ways we might decide not to print an error message: + # the verbosity level isn't high enough, or the filters filter it out. + if confidence < _cpp_style_state.verbose_level: + return False + + is_filtered = False + for one_filter in _filters(): + if one_filter.startswith('-'): + if category.startswith(one_filter[1:]): + is_filtered = True + elif one_filter.startswith('+'): + if category.startswith(one_filter[1:]): + is_filtered = False + else: + assert False # should have been checked for in set_filter. + if is_filtered: + return False + + return True + + +def error(filename, line_number, category, confidence, message): + """Logs the fact we've found a lint error. + + We log where the error was found, and also our confidence in the error, + that is, how certain we are this is a legitimate style regression, and + not a misidentification or a use that's sometimes justified. + + Args: + filename: The name of the file containing the error. + line_number: The number of the line containing the error. + category: A string used to describe the "category" this bug + falls under: "whitespace", say, or "runtime". Categories + may have a hierarchy separated by slashes: "whitespace/indent". + confidence: A number from 1-5 representing a confidence score for + the error, with 5 meaning that we are certain of the problem, + and 1 meaning that it could be a legitimate construct. + message: The error message. + """ + # There are two ways we might decide not to print an error message: + # the verbosity level isn't high enough, or the filters filter it out. + if _should_print_error(category, confidence): + _cpp_style_state.increment_error_count() + if _cpp_style_state.output_format == 'vs7': + sys.stderr.write('%s(%s): %s [%s] [%d]\n' % ( + filename, line_number, message, category, confidence)) + else: + sys.stderr.write('%s:%s: %s [%s] [%d]\n' % ( + filename, line_number, message, category, confidence)) + + +# 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(filename, 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(filename, 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(clean_lines, line_number, pos): + """If input points to ( or { or [, finds the position that closes it. + + If lines[line_number][pos] points to a '(' or '{' or '[', finds the the + line_number/pos that correspond to the closing of the expression. + + Args: + clean_lines: A CleansedLines instance containing the file. + line_number: The number of the line to check. + pos: A position on the line. + + Returns: + A tuple (line, line_number, pos) pointer *past* the closing brace, or + (line, len(lines), -1) if we never find a close. Note we ignore + strings and comments when matching; and the line we return is the + 'cleansed' line at line_number. + """ + + line = clean_lines.elided[line_number] + start_character = line[pos] + if start_character not in '({[': + return (line, clean_lines.num_lines(), -1) + if start_character == '(': + end_character = ')' + if start_character == '[': + end_character = ']' + if start_character == '{': + end_character = '}' + + num_open = line.count(start_character) - line.count(end_character) + while line_number < clean_lines.num_lines() and num_open > 0: + line_number += 1 + line = clean_lines.elided[line_number] + num_open += line.count(start_character) - line.count(end_character) + # OK, now find the end_character that actually got us back to even + endpos = len(line) + while num_open >= 0: + endpos = line.rfind(')', 0, endpos) + num_open -= 1 # chopped off another ) + return (line, line_number, endpos + 1) + + +def check_for_copyright(filename, 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(filename, 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. + + """ + + fileinfo = FileInfo(filename) + return re.sub(r'[-./\s]', '_', fileinfo.repository_name()).upper() + '_' + + +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 + endif = None + endif_line_number = 0 + 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] + # find the last occurrence of #endif, save entire line + if line.startswith('#endif'): + endif = line + endif_line_number = line_number + + if not ifndef or not define or ifndef != define: + error(filename, 0, 'build/header_guard', 5, + 'No #ifndef header guard found, suggested CPP variable is: %s' % + cppvar) + return + + # The guard should be PATH_FILE_H_, but we also allow PATH_FILE_H__ + # for backward compatibility. + if ifndef != cppvar: + error_level = 0 + if ifndef != cppvar + '_': + error_level = 5 + + error(filename, ifndef_line_number, 'build/header_guard', error_level, + '#ifndef header guard has wrong style, please use: %s' % cppvar) + + if endif != ('#endif // %s' % cppvar): + error_level = 0 + if endif != ('#endif // %s' % (cppvar + '_')): + error_level = 5 + + error(filename, endif_line_number, 'build/header_guard', error_level, + '#endif line should be "#endif // %s"' % cppvar) + + +def check_for_unicode_replacement_characters(filename, 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: + filename: The name of the current file. + 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(filename, line_number, 'readability/utf8', 5, + 'Line contains invalid UTF-8 (or Unicode replacement character).') + + +def check_for_new_line_at_eof(filename, lines, error): + """Logs an error if there is no newline char at the end of the file. + + Args: + filename: The name of the current file. + 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(filename, 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(filename, 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: + filename: The name of the current file. + 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(filename, 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(filename, 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(filename, 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: + filename: The name of the current file. + 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 -- pylint: disable-msg=C6403 + if index >= 0 and (index == 0 or (not line[index - 1].isalnum() + and line[index - 1] not in ('_', '.', '>'))): + error(filename, 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(filename, 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: + filename: The name of the current file. + 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(filename, 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, filename, error): + """Checks that all classes have been completely parsed. + + Call this when all lines in a file have been processed. + Args: + filename: The name of the current file. + 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(filename, self.classinfo_stack[0].line_number, 'build/class', 5, + 'Failed to find complete declaration of class %s' % + self.classinfo_stack[0].name) + + +def check_for_non_standard_constructs(filename, 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: + filename: The name of the current file. + 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 4 arguments: + filename, 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(filename, line_number, 'runtime/printf_format', 3, + '%q in format strings is deprecated. Use %ll instead.') + + if search(r'printf\s*\(.*".*%\d+\$', line): + error(filename, 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(filename, 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(filename, 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(filename, 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(filename, 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(filename, 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(filename, 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(filename, 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(filename, line, line_number, error): + """Checks for the correctness of various spacing around function calls. + + Args: + filename: The name of the current file. + 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(filename, line_number, 'whitespace/parens', 4, + 'Extra space after ( in function call') + elif search(r'\([ \t]+(?!(\s*\\)|\()', function_call): + error(filename, line_number, 'whitespace/parens', 2, + 'Extra space after (') + if (search(r'\w\s+\(', function_call) + and not search(r'#\s*define|typedef', function_call)): + error(filename, 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(filename, 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 check_for_function_lengths(filename, 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 + + Uses a simplistic algorithm assuming other style guidelines + (especially spacing) are followed. + Only checks unindented functions, so class members are unchecked. + Trivial bodies are unchecked, so constructors with huge initializer lists + may be missed. + 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: + filename: The name of the current file. + 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] + joined_line = '' + + starting_func = False + regexp = r'(\w(\w|::|\*|\&|\s)*)\(' # decls * & space::name( ... + match_result = match(regexp, line) + if match_result: + # 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' or function_name == 'TEST_F' or (not match(r'[A-Z_]+$', function_name)): + starting_func = True + + if starting_func: + body_found = False + for start_line_number in xrange(line_number, clean_lines.num_lines()): + start_line = lines[start_line_number] + joined_line += ' ' + start_line.lstrip() + if search(r'(;|})', start_line): # Declarations and trivial functions + body_found = True + break # ... ignore + if search(r'{', start_line): + body_found = True + function = search(r'((\w|:)*)\(', line).group(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 += '()' + function_state.begin(function) + break + if not body_found: + # No body for the function (or evidence of a non-function) was found. + error(filename, line_number, 'readability/fn_size', 5, + 'Lint failed to find start of function body.') + elif match(r'^\}\s*$', line): # function end + if not search(r'\bNOLINT\b', raw_line): + function_state.check(error, filename, line_number) + function_state.end() + elif not match(r'^\s*$', line): + function_state.count() # Count non-blank/non-comment lines. + + +def check_spacing(filename, 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: + filename: The name of the current file. + 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(filename, 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(filename, line_number, 'whitespace/blank_line', 3, + 'Blank line at the end of a code block. Is this needed?') + + # Next, we complain if there's a comment too near the text + comment_position = line.find('//') + if comment_position != -1: + # Check if the // may be in quotes. If so, ignore it + # Comparisons made explicit for clarity -- pylint: disable-msg=C6403 + if (line.count('"', 0, comment_position) - line.count('\\"', 0, comment_position)) % 2 == 0: # not in quotes + # Allow one space for new scopes, two spaces otherwise: + if (not match(r'^\s*{ //', line) + and ((comment_position >= 1 + and line[comment_position-1] not in string.whitespace) + or (comment_position >= 2 + and line[comment_position-2] not in string.whitespace))): + error(filename, line_number, 'whitespace/comments', 2, + 'At least two spaces is best between code and 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(filename, line_number, 'whitespace/comments', 4, + 'Should have a space between // and comment') + + line = clean_lines.elided[line_number] # get rid of comments and strings + + # Don't try to do spacing checks for operator methods + line = re.sub(r'operator(==|!=|<|<<|<=|>=|>>|>)\(', 'operator\(', line) + + # We allow no-spaces around = within an if: "if ( (a=Foo()) == 0 )". + # Otherwise not. Note we only check for non-spaces on *both* sides; + # sometimes people put non-spaces on one side when aligning ='s among + # many lines (not that this is behavior that I approve of...) + if search(r'[\w.]=[\w.]', line) and not search(r'\b(if|while) ', line): + error(filename, 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(filename, line_number, 'whitespace/operators', 3, + 'Missing spaces around %s' % matched.group(1)) + # We allow no-spaces around << and >> when used like this: 10<<20, but + # not otherwise (particularly, not when used as streams) + matched = search(r'[^0-9\s](<<|>>)[^0-9\s]', line) + if matched: + error(filename, 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(filename, 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(filename, 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(if|for|foreach|while|switch)\s*\(([ ]*)(.).*[^ ]+([ ]*)\)\s*{\s*$', + line) + if matched: + if len(matched.group(2)) != len(matched.group(4)): + if not (matched.group(3) == ';' + and len(matched.group(2)) == 1 + len(matched.group(4)) + or not matched.group(2) and search(r'\bfor\s*\(.*; \)', line)): + error(filename, line_number, 'whitespace/parens', 5, + 'Mismatching spaces inside () in %s' % matched.group(1)) + if not len(matched.group(2)) in [0, 1]: + error(filename, line_number, 'whitespace/parens', 5, + 'Should have zero or one spaces inside ( and ) in %s' % + matched.group(1)) + + # You should always have a space after a comma (either as fn arg or operator) + if search(r',[^\s]', line): + error(filename, line_number, 'whitespace/comma', 3, + 'Missing space after ,') + + if filename.endswith('.cpp'): + # C++ should have the & or * beside the type not the variable name. + matched = match(r'\s*\w+(?<!\breturn)\s+(?P<pointer_operator>\*|\&)\w+', line) + if matched: + error(filename, line_number, 'whitespace/declaration', 3, + 'Declaration has space between type name and %s in %s' % (matched.group('pointer_operator'), matched.group(0).strip())) + + elif filename.endswith('.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(filename, 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(filename, 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(filename, line_number, 'whitespace/braces', 5, + 'Missing space before {') + + # Make sure '} else {' has spaces. + if search(r'}else', line): + error(filename, 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(filename, line_number, 'whitespace/braces', 5, + 'Extra space before [') + + # 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(filename, line_number, 'whitespace/semicolon', 5, + 'Semicolon defining empty statement. Use { } instead.') + elif search(r'^\s*;\s*$', line): + error(filename, 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(filename, 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(filename, 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(filename, clean_lines, line_number, file_extension, error): + """Looks for indentation errors inside of namespaces. + + 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 (dot not included) of 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 + + namespace_indentation = namespace_match.group('namespace_indentation') + + is_header_file = file_extension == 'h' + is_implementation_file = not is_header_file + line_offset = 0 + + if is_header_file: + inner_indentation = namespace_indentation + ' ' * 4 + + for current_line in clean_lines.raw_lines[line_number + 1:]: + line_offset += 1 + + # Skip not only empty lines but also those with preprocessor directives. + # Goto labels don't occur in header files, so no need to check for those. + if current_line.strip() == '' or current_line.startswith('#'): + continue + + if not current_line.startswith(inner_indentation): + # If something unindented was discovered, make sure it's a closing brace. + if not current_line.startswith(namespace_indentation + '}'): + error(filename, line_number + line_offset, 'whitespace/indent', 4, + 'In a header, code inside a namespace should be indented.') + break + + if is_implementation_file: + for current_line in clean_lines.raw_lines[line_number + 1:]: + line_offset += 1 + + # Skip not only empty lines but also those with (goto) labels. + # The goto label regexp accepts spaces or the beginning of a + # comment (if anything) after the initial colon. + if current_line.strip() == '' or match(r'\w+\s*:([\s\/].*)?$', current_line): + continue + + remaining_line = current_line[len(namespace_indentation):] + if not match(r'\S', remaining_line): + error(filename, line_number + line_offset, 'whitespace/indent', 4, + 'In an implementation file, code inside a namespace should not be indented.') + + # Just check the first non-empty line in any case, because + # otherwise we would need to count opened and closed braces, + # which is obviously a lot more complicated. + break + + +def check_switch_indentation(filename, clean_lines, line_number, error): + """Looks for indentation errors inside of switch statements. + + 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. + 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(filename, 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(filename, 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(filename, clean_lines, line_number, error): + """Looks for misplaced braces (e.g. at the end of line). + + 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. + 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\s*$', previous_line) + or search(r'\b(if|for|foreach|while|switch|else)\b', previous_line)) + and previous_line.find('#') < 0): + error(filename, line_number, 'whitespace/braces', 4, + 'This { should be at the end of the previous line') + elif (search(r'\)\s*(const\s*)?{\s*$', line) + and line.count('(') == line.count(')') + and not search(r'\b(if|for|foreach|while|switch)\b', line)): + error(filename, 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] + if (previous_line.find('{') > 0 + and search(r'\b(if|for|foreach|while|else)\b', previous_line)): + error(filename, 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(filename, 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(filename, 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(filename, 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(filename, line_number, 'readability/braces', 4, + "You don't need a ; after a }") + + +def check_exit_statement_simplifications(filename, 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: + filename: The name of the current file. + 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(filename, 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(filename, 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(filename, clean_lines, line_number, error): + """Checks the use of CHECK and EXPECT macros. + + 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. + 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(filename, 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(filename, 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): + error(filename, 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(filename, clean_lines, line_number, error): + # This check doesn't apply to C or Objective-C implementation files. + if filename.endswith('.c') or filename.endswith('.m'): + return + + line = clean_lines.elided[line_number] + if search(r'\bNULL\b', line): + error(filename, 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(filename, line_number, 'readability/null', 4, 'Use 0 instead of NULL.') + +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(filename, clean_lines, line_number, file_extension, 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: + 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. + 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(filename, line_number, 'whitespace/tab', 1, + 'Tab found; better to use spaces') + + # One or three blank spaces at the beginning of the line is weird; it's + # hard to reconcile that with 4-space indents. + # NOTE: here are the conditions rob pike used for his tests. Mine aren't + # as sophisticated, but it may be worth becoming so: RLENGTH==initial_spaces + # if(RLENGTH > 20) complain = 0; + # if(match($0, " +(error|private|public|protected):")) complain = 0; + # if(match(prev, "&& *$")) complain = 0; + # if(match(prev, "\\|\\| *$")) complain = 0; + # if(match(prev, "[\",=><] *$")) complain = 0; + # if(match($0, " <<")) complain = 0; + # if(match(prev, " +for \\(")) complain = 0; + # if(prevodd && match(prevprev, " +for \\(")) complain = 0; + initial_spaces = 0 + cleansed_line = clean_lines.elided[line_number] + while initial_spaces < len(line) and line[initial_spaces] == ' ': + initial_spaces += 1 + if line and line[-1].isspace(): + error(filename, line_number, 'whitespace/end_of_line', 4, + 'Line ends in whitespace. Consider deleting these extra spaces.') + # There are certain situations we allow one space, notably for labels + elif ((initial_spaces >= 1 and initial_spaces <= 3) + and not match(r'\s*\w+\s*:\s*$', cleansed_line)): + error(filename, line_number, 'whitespace/indent', 3, + 'Weird number of spaces at line-start. ' + 'Are you using a 4-space indent?') + # Labels should always be indented at least one space. + elif not initial_spaces and line[:2] != '//': + label_match = match(r'(?P<label>[^:]+):\s*$', line) + + if label_match: + label = label_match.group('label') + # Only throw errors for stuff that is definitely not a goto label, + # because goto labels can in fact occur at the start of the line. + if label in ['public', 'private', 'protected'] or label.find(' ') != -1: + error(filename, line_number, 'whitespace/labels', 4, + 'Labels should always be indented at least one space. ' + 'If this is a member-initializer list in a constructor, ' + 'the colon should be on the line after the definition header.') + + 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)): + error(filename, line_number, 'whitespace/newline', 4, + 'More than one command on the same line') + + if cleansed_line.strip().endswith('||') or cleansed_line.strip().endswith('&&'): + error(filename, 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(filename, clean_lines, line_number, file_extension, error) + check_switch_indentation(filename, clean_lines, line_number, error) + check_braces(filename, clean_lines, line_number, error) + check_exit_statement_simplifications(filename, clean_lines, line_number, error) + check_spacing(filename, clean_lines, line_number, error) + check_check(filename, clean_lines, line_number, error) + check_for_comparisons_to_zero(filename, clean_lines, line_number, error) + check_for_null(filename, clean_lines, line_number, 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 _is_test_filename(filename): + """Determines if the given filename has a suffix that identifies it as a test. + + Args: + filename: The input filename. + + Returns: + True if 'filename' looks like a test, False otherwise. + """ + if (filename.endswith('_test.cpp') + or filename.endswith('_unittest.cpp') + or filename.endswith('_regtest.cpp')): + return True + return False + + +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: + 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; + + # 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() and target_base.startswith(include_base): + 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: + return _PRIMARY_HEADER + + return _OTHER_HEADER + + + +def check_include_line(filename, 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. + 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. + """ + + 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): + # Many unit tests use cout, so we exempt them. + if not _is_test_filename(filename): + error(filename, line_number, 'readability/streams', 3, + 'Streams are highly discouraged.') + + # Look for specific includes to fix. + if include.startswith('wtf/') and not is_system: + error(filename, 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(filename, 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) + 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, filename.endswith('.h')) + + # 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(filename, 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. + 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(): + error(filename, line_number, 'build/include_order', 4, + 'Alphabetical sorting problem.') + + if error_message: + if filename.endswith('.h'): + error(filename, line_number, 'build/include_order', 4, + '%s Should be: alphabetically sorted.' % + error_message) + else: + error(filename, 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, + 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. + 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, 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(filename, line_number, 'readability/casting', 4, + 'Using deprecated casting style. ' + 'Use static_cast<%s>(...) instead' % + matched.group(1)) + + check_c_style_cast(filename, 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(filename, 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(filename, 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(filename, 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) and not _is_test_filename(filename): + error(filename, 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(filename, 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(filename, 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(filename, 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(filename, line_number, 'runtime/printf', 5, + 'Never use sprintf. Use snprintf instead.') + matched = search(r'\b(strcpy|strcat)\b', line) + if matched: + error(filename, line_number, 'runtime/printf', 4, + 'Almost always, snprintf is better than %s' % matched.group(1)) + + if search(r'\bsscanf\b', line): + error(filename, 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(filename, 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(filename, 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(filename, 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(filename, 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(filename, 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.') + + +def check_c_style_cast(filename, 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: + filename: The name of the current file. + 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(filename, 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(filename, 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(filename, 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. + """ + 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, + io=codecs): + """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. + io: The IO factory to use to read the header file. Provided for unittest + injection. + """ + 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' + emacs_flymake_suffix = '_flymake.cpp' + if abs_filename.endswith(emacs_flymake_suffix): + abs_filename = abs_filename[:-len(emacs_flymake_suffix)] + '.cpp' + + # 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, io): + 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(filename, 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, 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. + error: A callable to which errors are reported, which takes 4 arguments: + filename, line number, error level, and message + + """ + raw_lines = clean_lines.raw_lines + check_for_function_lengths(filename, clean_lines, line, function_state, error) + if search(r'\bNOLINT\b', raw_lines[line]): # ignore nolint lines + return + check_for_multiline_comments_and_strings(filename, clean_lines, line, error) + check_style(filename, clean_lines, line, file_extension, error) + check_language(filename, clean_lines, line, file_extension, include_state, + error) + check_for_non_standard_constructs(filename, clean_lines, line, + class_state, error) + check_posix_threading(filename, clean_lines, line, error) + check_invalid_increment(filename, clean_lines, line, error) + + +def process_file_data(filename, file_extension, lines, error): + """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() + class_state = _ClassState() + + check_for_copyright(filename, lines, error) + + if file_extension == 'h': + check_for_header_guard(filename, lines, error) + + remove_multi_line_comments(filename, lines, error) + clean_lines = CleansedLines(lines) + for line in xrange(clean_lines.num_lines()): + process_line(filename, file_extension, clean_lines, line, + include_state, function_state, class_state, error) + class_state.check_finished(filename, 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(filename, lines, error) + + check_for_new_line_at_eof(filename, lines, error) + + +def process_file(filename, error=error): + """Performs cpp_style on a single file. + + Args: + filename: The name of the file to parse. + error: The function to call with any errors found. + """ + try: + # Support the UNIX convention of using "-" for stdin. Note that + # we are not opening the file with universal newline support + # (which codecs doesn't support anyway), so the resulting lines do + # contain trailing '\r' characters if we are reading a file that + # has CRLF endings. + # If after the split a trailing '\r' is present, it is removed + # below. If it is not expected to be present (i.e. os.linesep != + # '\r\n' as in Windows), a warning is issued below if this file + # is processed. + + if filename == '-': + lines = codecs.StreamReaderWriter(sys.stdin, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace').read().split('\n') + else: + lines = codecs.open(filename, 'r', 'utf8', 'replace').read().split('\n') + + carriage_return_found = False + # Remove trailing '\r'. + for line_number in range(len(lines)): + if lines[line_number].endswith('\r'): + lines[line_number] = lines[line_number].rstrip('\r') + carriage_return_found = True + + except IOError: + sys.stderr.write( + "Skipping input '%s': Can't open for reading\n" % filename) + return + + # Note, if no dot is found, this will give the entire filename as the ext. + file_extension = filename[filename.rfind('.') + 1:] + + # When reading from stdin, the extension is unknown, so no cpp_style tests + # should rely on the extension. + if (filename != '-' and file_extension != 'h' and file_extension != 'cpp' + and file_extension != 'c'): + sys.stderr.write('Ignoring %s; not a .cpp, .c or .h file\n' % filename) + else: + process_file_data(filename, file_extension, lines, error) + if carriage_return_found and os.linesep != '\r\n': + # Use 0 for line_number since outputing only one error for potentially + # several lines. + error(filename, 0, 'whitespace/newline', 1, + 'One or more unexpected \\r (^M) found;' + 'better to use only a \\n') + + sys.stderr.write('Done processing %s\n' % filename) + + +def print_usage(message): + """Prints a brief usage string and exits, optionally with an error message. + + Args: + message: The optional error message. + """ + sys.stderr.write(_USAGE) + if message: + sys.exit('\nFATAL ERROR: ' + message) + else: + sys.exit(1) + + +def print_categories(): + """Prints a list of all the error-categories used by error messages. + + These are the categories used to filter messages via --filter. + """ + sys.stderr.write(_ERROR_CATEGORIES) + sys.exit(0) + + +def parse_arguments(args, additional_flags=[]): + """Parses the command line arguments. + + This may set the output format and verbosity level as side-effects. + + Args: + args: The command line arguments: + additional_flags: A list of strings which specifies flags we allow. + + Returns: + A tuple of (filenames, flags) + + filenames: The list of filenames to lint. + flags: The dict of the flag names and the flag values. + """ + flags = ['help', 'output=', 'verbose=', 'filter='] + additional_flags + additional_flag_values = {} + try: + (opts, filenames) = getopt.getopt(args, '', flags) + except getopt.GetoptError: + print_usage('Invalid arguments.') + + verbosity = _verbose_level() + output_format = _output_format() + filters = '' + + for (opt, val) in opts: + if opt == '--help': + print_usage(None) + elif opt == '--output': + if not val in ('emacs', 'vs7'): + print_usage('The only allowed output formats are emacs and vs7.') + output_format = val + elif opt == '--verbose': + verbosity = int(val) + elif opt == '--filter': + filters = val + if not filters: + print_categories() + else: + additional_flag_values[opt] = val + + _set_output_format(output_format) + _set_verbose_level(verbosity) + _set_filters(filters) + + return (filenames, additional_flag_values) + + +def use_webkit_styles(): + """Disables some features which are not suitable for WebKit.""" + # FIXME: For filters we will never want to have, remove them. + # For filters we want to have similar functionalities, + # modify the implementation and enable them. + global _DEFAULT_FILTERS + _DEFAULT_FILTERS = [ + '-whitespace/comments', + '-whitespace/blank_line', + '-runtime/explicit', # explicit + '-runtime/virtual', # virtual dtor + '-runtime/printf', + '-runtime/threadsafe_fn', + '-runtime/rtti', + '-build/include_what_you_use', # <string> for std::string + '-legal/copyright', + '-readability/multiline_comment', + '-readability/braces', # int foo() {}; + '-readability/fn_size', + '-build/storage_class', # const static + '-build/endif_comment', + '-whitespace/labels', + '-runtime/arrays', # variable length array + '-build/header_guard', + '-readability/casting', + '-readability/function', + '-runtime/casting', + '-runtime/sizeof', + ] + + +def main(): + sys.stderr.write( + '''********************* WARNING WARNING WARNING ********************* + +This tool is in the process of development and may give inaccurate +results at present. Please file bugs (and/or patches) for things +that you notice that it flags incorrectly. + +********************* WARNING WARNING WARNING ********************* + +''') + + use_webkit_styles() + + (filenames, flags) = parse_arguments(sys.argv[1:]) + if not filenames: + print_usage('No files were specified.') + + # Change stderr to write with replacement characters so we don't die + # if we try to print something containing non-ASCII characters. + sys.stderr = codecs.StreamReaderWriter(sys.stderr, + codecs.getreader('utf8'), + codecs.getwriter('utf8'), + 'replace') + + _cpp_style_state.reset_error_count() + for filename in filenames: + process_file(filename) + sys.stderr.write('Total errors found: %d\n' % _cpp_style_state.error_count) + sys.exit(_cpp_style_state.error_count > 0) + + +if __name__ == '__main__': + main() diff --git a/WebKitTools/Scripts/modules/cpp_style_unittest.py b/WebKitTools/Scripts/modules/cpp_style_unittest.py new file mode 100644 index 0000000..ad01fc3 --- /dev/null +++ b/WebKitTools/Scripts/modules/cpp_style_unittest.py @@ -0,0 +1,3461 @@ +#!/usr/bin/python +# -*- coding: utf-8; -*- +# +# Copyright (C) 2009 Google Inc. All rights reserved. +# Copyright (C) 2009 Torch Mobile 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. + +"""Unit test for cpp_style.py.""" + +# FIXME: Add a good test that tests UpdateIncludeState. + +import codecs +import os +import random +import re +import unittest +import cpp_style + + +# 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 cpp_style._ERROR_CATEGORIES, to help keep that list up to date. +class ErrorCollector: + # These are a global list, covering all categories seen ever. + _ERROR_CATEGORIES = [x.strip() # get rid of leading whitespace + for x in cpp_style._ERROR_CATEGORIES.split()] + _SEEN_ERROR_CATEGORIES = {} + + def __init__(self, assert_fn): + """assert_fn: a function to call when we notice a problem.""" + self._assert_fn = assert_fn + self._errors = [] + + def __call__(self, unused_filename, unused_linenum, + category, confidence, message): + self._assert_fn(category in self._ERROR_CATEGORIES, + 'Message "%s" has category "%s",' + ' which is not in _ERROR_CATEGORIES' % (message, category)) + self._SEEN_ERROR_CATEGORIES[category] = 1 + if cpp_style._should_print_error(category, confidence): + self._errors.append('%s [%s] [%d]' % (message, category, confidence)) + + 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 _ERROR_CATEGORIES - _SEEN_ERROR_CATEGORIES. + + This should only be called after all tests are run, so + _SEEN_ERROR_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._ERROR_CATEGORIES: + if category not in self._SEEN_ERROR_CATEGORIES: + import sys + sys.exit('FATAL ERROR: There are no tests for category "%s"' % category) + + def remove_if_present(self, substr): + for (index, error) in enumerate(self._errors): + if error.find(substr) != -1: + self._errors = self._errors[0:index] + self._errors[(index + 1):] + break + + +# 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 CppStyleTestBase(unittest.TestCase): + """Provides some useful helper functions for cpp_style tests.""" + + # Perform lint on single line of input and return the error message. + def perform_single_line_lint(self, code, file_name): + error_collector = ErrorCollector(self.assert_) + lines = code.split('\n') + cpp_style.remove_multi_line_comments(file_name, lines, error_collector) + clean_lines = cpp_style.CleansedLines(lines) + include_state = cpp_style._IncludeState() + function_state = cpp_style._FunctionState() + ext = file_name[file_name.rfind('.') + 1:] + class_state = cpp_style._ClassState() + cpp_style.process_line(file_name, ext, clean_lines, 0, + include_state, function_state, + class_state, error_collector) + # Single-line lint tests are allowed to fail the 'unlintable function' + # check. + error_collector.remove_if_present( + 'Lint failed to find start of function body.') + return error_collector.results() + + # Perform lint over multiple lines and return the error message. + def perform_multi_line_lint(self, code, file_name): + error_collector = ErrorCollector(self.assert_) + lines = code.split('\n') + cpp_style.remove_multi_line_comments(file_name, lines, error_collector) + lines = cpp_style.CleansedLines(lines) + ext = file_name[file_name.rfind('.') + 1:] + class_state = cpp_style._ClassState() + for i in xrange(lines.num_lines()): + cpp_style.check_style(file_name, lines, i, ext, error_collector) + cpp_style.check_for_non_standard_constructs(file_name, lines, i, class_state, + error_collector) + class_state.check_finished(file_name, error_collector) + return error_collector.results() + + # Similar to perform_multi_line_lint, but calls check_language instead of + # check_for_non_standard_constructs + def perform_language_rules_check(self, file_name, code): + error_collector = ErrorCollector(self.assert_) + include_state = cpp_style._IncludeState() + lines = code.split('\n') + cpp_style.remove_multi_line_comments(file_name, lines, error_collector) + lines = cpp_style.CleansedLines(lines) + ext = file_name[file_name.rfind('.') + 1:] + for i in xrange(lines.num_lines()): + cpp_style.check_language(file_name, lines, i, ext, include_state, + error_collector) + return error_collector.results() + + def perform_function_lengths_check(self, code): + """Perform Lint function length check on block of code and return warnings. + + Builds up an array of lines corresponding to the code and strips comments + using cpp_style functions. + + Establishes an error collector and invokes the function length checking + function following cpp_style's pattern. + + Args: + code: C++ source code expected to generate a warning message. + + Returns: + The accumulated errors. + """ + file_name = 'foo.cpp' + error_collector = ErrorCollector(self.assert_) + function_state = cpp_style._FunctionState() + lines = code.split('\n') + cpp_style.remove_multi_line_comments(file_name, lines, error_collector) + lines = cpp_style.CleansedLines(lines) + for i in xrange(lines.num_lines()): + cpp_style.check_for_function_lengths(file_name, lines, i, + function_state, error_collector) + return error_collector.results() + + def perform_include_what_you_use(self, code, filename='foo.h', io=codecs): + # First, build up the include state. + error_collector = ErrorCollector(self.assert_) + include_state = cpp_style._IncludeState() + lines = code.split('\n') + cpp_style.remove_multi_line_comments(filename, lines, error_collector) + lines = cpp_style.CleansedLines(lines) + for i in xrange(lines.num_lines()): + cpp_style.check_language(filename, lines, i, '.h', include_state, + error_collector) + # We could clear the error_collector here, but this should + # also be fine, since our IncludeWhatYouUse unittests do not + # have language problems. + + # Second, look for missing includes. + cpp_style.check_for_include_what_you_use(filename, lines, include_state, + error_collector, io) + return error_collector.results() + + # Perform lint and compare the error message with "expected_message". + def assert_lint(self, code, expected_message, file_name='foo.cpp'): + self.assertEquals(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.assertEquals(expected_message, messages) + + def assert_multi_line_lint(self, code, expected_message, file_name='foo.h'): + self.assertEquals(expected_message, self.perform_multi_line_lint(code, file_name)) + + def assert_multi_line_lint_re(self, code, expected_message_re, file_name='foo.h'): + message = self.perform_multi_line_lint(code, file_name) + 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): + self.assertEquals(expected_message, + self.perform_language_rules_check(file_name, code)) + + def assert_include_what_you_use(self, code, expected_message): + self.assertEquals(expected_message, + self.perform_include_what_you_use(code)) + + def assert_blank_lines_check(self, lines, start_errors, end_errors): + error_collector = ErrorCollector(self.assert_) + cpp_style.process_file_data('foo.cpp', 'cpp', lines, error_collector) + self.assertEquals( + start_errors, + error_collector.results().count( + 'Blank line at the start of a code block. Is this needed?' + ' [whitespace/blank_line] [2]')) + self.assertEquals( + end_errors, + error_collector.results().count( + 'Blank line at the end of a code block. Is this needed?' + ' [whitespace/blank_line] [3]')) + + +class CppStyleTest(CppStyleTestBase): + + # Test get line width. + def test_get_line_width(self): + self.assertEquals(0, cpp_style.get_line_width('')) + self.assertEquals(10, cpp_style.get_line_width(u'x' * 10)) + self.assertEquals(16, cpp_style.get_line_width(u'都|道|府|県|支庁')) + + def test_find_next_multi_line_comment_start(self): + self.assertEquals(1, cpp_style.find_next_multi_line_comment_start([''], 0)) + + lines = ['a', 'b', '/* c'] + self.assertEquals(2, cpp_style.find_next_multi_line_comment_start(lines, 0)) + + lines = ['char a[] = "/*";'] # not recognized as comment. + self.assertEquals(1, cpp_style.find_next_multi_line_comment_start(lines, 0)) + + def test_find_next_multi_line_comment_end(self): + self.assertEquals(1, cpp_style.find_next_multi_line_comment_end([''], 0)) + lines = ['a', 'b', ' c */'] + self.assertEquals(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.assertEquals(['a', '// dummy', '// dummy', '// dummy', 'b'], lines) + + 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) + # It is explicitly allowed in tests, however. + self.assert_language_rules_check('foo_test.cpp', statement, '') + self.assert_language_rules_check('foo_unittest.cpp', statement, '') + self.assert_language_rules_check('foo_regtest.cpp', statement, '') + + # 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.assertEquals('Add #include <vector> for vector<>' + ' [build/include_what_you_use] [4]', + self.perform_include_what_you_use(code, 'foo.h')) + self.assertEquals('', + 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.assertEquals(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.assertEquals(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.assertEquals(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/a.h" + + std::set<int> foo;''' % os.path.basename(os.getcwd()), + filename='a.cpp', + io=MockIo(mock_header_contents)) + self.assertEquals(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.assertEquals((True, ''), f('a.cpp', 'a.h')) + self.assertEquals((True, ''), f('base/google.cpp', 'base/google.h')) + self.assertEquals((True, ''), f('base/google_test.cpp', 'base/google.h')) + self.assertEquals((True, ''), + f('base/google_unittest.cpp', 'base/google.h')) + self.assertEquals((True, ''), + f('base/internal/google_unittest.cpp', + 'base/public/google.h')) + self.assertEquals((True, 'xxx/yyy/'), + f('xxx/yyy/base/internal/google_unittest.cpp', + 'base/public/google.h')) + self.assertEquals((True, 'xxx/yyy/'), + f('xxx/yyy/base/google_unittest.cpp', + 'base/public/google.h')) + self.assertEquals((True, ''), + f('base/google_unittest.cpp', 'base/google-inl.h')) + self.assertEquals((True, '/home/build/google3/'), + f('/home/build/google3/base/google.cpp', 'base/google.h')) + + self.assertEquals((False, ''), + f('/home/build/google3/base/google.cpp', 'basu/google.h')) + self.assertEquals((False, ''), f('a.cpp', 'b.h')) + + def test_cleanse_line(self): + self.assertEquals('int foo = 0; ', + cpp_style.cleanse_comments('int foo = 0; // danger!')) + self.assertEquals('int o = 0;', + cpp_style.cleanse_comments('int /* foo */ o = 0;')) + self.assertEquals('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( + r'''/* int a = 0; multi-liner + static const int b = 0;''', + 'Could not find end of multi-line comment' + ' [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]') + 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.assert_) + cpp_style.process_file_data(file_path, 'cpp', + ['const char* str = "This is a\\', + ' multiline string.";'], + error_collector) + self.assertEquals( + 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]') + self.assert_multi_line_lint( + ''' /**/ static Foo(int f);''', + '') + + # 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 a_list[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 array_name[kCompileTimeConstant];', '') + self.assert_lint('char buf[somenamespace::kBufSize];', '') + self.assert_lint('int array_name[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];', '') + 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( + '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\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 ) {', 'Mismatching spaces inside () in if' + ' [whitespace/parens] [5]') + self.assert_lint('switch ( foo) {', 'Mismatching spaces inside () in switch' + ' [whitespace/parens] [5]') + self.assert_lint('for (foo; ba; bar ) {', 'Mismatching spaces inside () 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('foreach (foo, foos ) {', 'Mismatching spaces inside () in foreach' + ' [whitespace/parens] [5]') + self.assert_lint('foreach ( foo, foos) {', 'Mismatching spaces inside () in foreach' + ' [whitespace/parens] [5]') + self.assert_lint('while ( foo ) {', 'Should have zero or one spaces inside' + ' ( and ) 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('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_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,', '') + + 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 very_long_name_variable) {}', '') + 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_two_spaces_between_code_and_comments(self): + self.assert_lint('} // namespace foo', + 'At least two spaces is best between code and comments' + ' [whitespace/comments] [2]') + self.assert_lint('}// namespace foo', + 'At least two spaces is best between code and comments' + ' [whitespace/comments] [2]') + self.assert_lint('printf("foo"); // Outside quotes.', + 'At least two spaces is best between code and comments' + ' [whitespace/comments] [2]') + self.assert_lint('int i = 0; // Having two spaces is fine.', '') + self.assert_lint('int i = 0; // Having three spaces is OK.', '') + 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; comment is too close!', + 'At least two spaces is best between code and comments' + ' [whitespace/comments] [2]') + self.assert_lint('printf("// In quotes.")', '') + self.assert_lint('printf("\\"%s // In quotes.")', '') + self.assert_lint('printf("%s", "// In quotes.")', '') + + 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.assert_) + cpp_style.process_file_data('foo.cpp', 'cpp', data.split('\n'), + error_collector) + # The warning appears only once. + self.assertEquals( + 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.assert_) + cpp_style.process_file_data( + 'foo.cpp', 'cpp', + unicode(raw_bytes, 'utf8', 'replace').split('\n'), + error_collector) + # The warning appears only once. + self.assertEquals( + 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.assert_(cpp_style.is_blank_line('')) + self.assert_(cpp_style.is_blank_line(' ')) + self.assert_(cpp_style.is_blank_line(' \t\r\n')) + self.assert_(not cpp_style.is_blank_line('int a;')) + self.assert_(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.assert_) + cpp_style.process_file_data('foo.cpp', 'cpp', + ['namespace {', '', '} // namespace'], + error_collector) + self.assertEquals(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.assert_) + cpp_style.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.assertEquals(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.assert_) + cpp_style.process_file_data('foo.cpp', 'cpp', + ['if (hoge) {', + '', + '}', + ' else {' # Warning on this line + '', + '}'], + error_collector) + self.assertEquals(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_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('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 four_space_indent;', '') + self.assert_lint(' int one_space_indent;', + 'Weird number of spaces at line-start. ' + 'Are you using a 4-space indent? [whitespace/indent] [3]') + self.assert_lint(' int three_space_indent;', + 'Weird number of spaces at line-start. ' + 'Are you using a 4-space indent? [whitespace/indent] [3]') + self.assert_lint(' char* one_space_indent = "public:";', + 'Weird number of spaces at line-start. ' + 'Are you using a 4-space indent? [whitespace/indent] [3]') + self.assert_lint(' public:', '') + self.assert_lint(' public:', '') + self.assert_lint(' public:', '') + + def test_label(self): + self.assert_lint('public:', + 'Labels should always be indented at least one space. ' + 'If this is a member-initializer list in a constructor, ' + 'the colon should be on the line after the definition ' + 'header. [whitespace/labels] [4]') + self.assert_lint(' public:', '') + self.assert_lint(' public:', '') + self.assert_lint(' public:', '') + self.assert_lint(' public:', '') + self.assert_lint(' public:', '') + + 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\t// set a to 5', + 'Tab found; better to use spaces [whitespace/tab] [1]') + + def test_parse_arguments(self): + old_usage = cpp_style._USAGE + old_error_categories = cpp_style._ERROR_CATEGORIES + old_output_format = cpp_style._cpp_style_state.output_format + old_verbose_level = cpp_style._cpp_style_state.verbose_level + old_filters = cpp_style._cpp_style_state.filters + try: + # Don't print usage during the tests, or filter categories + cpp_style._USAGE = '' + cpp_style._ERROR_CATEGORIES = '' + + self.assertRaises(SystemExit, cpp_style.parse_arguments, ['--badopt']) + self.assertRaises(SystemExit, cpp_style.parse_arguments, ['--help']) + self.assertRaises(SystemExit, cpp_style.parse_arguments, ['--filter=']) + # This is illegal because all filters must start with + or - + self.assertRaises(ValueError, cpp_style.parse_arguments, ['--filter=foo']) + self.assertRaises(ValueError, cpp_style.parse_arguments, + ['--filter=+a,b,-c']) + + self.assertEquals((['foo.cpp'], {}), cpp_style.parse_arguments(['foo.cpp'])) + self.assertEquals(old_output_format, cpp_style._cpp_style_state.output_format) + self.assertEquals(old_verbose_level, cpp_style._cpp_style_state.verbose_level) + + self.assertEquals(([], {}), cpp_style.parse_arguments([])) + self.assertEquals(([], {}), cpp_style.parse_arguments(['--v=0'])) + + self.assertEquals((['foo.cpp'], {}), + cpp_style.parse_arguments(['--v=1', 'foo.cpp'])) + self.assertEquals(1, cpp_style._cpp_style_state.verbose_level) + self.assertEquals((['foo.h'], {}), + cpp_style.parse_arguments(['--v=3', 'foo.h'])) + self.assertEquals(3, cpp_style._cpp_style_state.verbose_level) + self.assertEquals((['foo.cpp'], {}), + cpp_style.parse_arguments(['--verbose=5', 'foo.cpp'])) + self.assertEquals(5, cpp_style._cpp_style_state.verbose_level) + self.assertRaises(ValueError, + cpp_style.parse_arguments, ['--v=f', 'foo.cpp']) + + self.assertEquals((['foo.cpp'], {}), + cpp_style.parse_arguments(['--output=emacs', 'foo.cpp'])) + self.assertEquals('emacs', cpp_style._cpp_style_state.output_format) + self.assertEquals((['foo.h'], {}), + cpp_style.parse_arguments(['--output=vs7', 'foo.h'])) + self.assertEquals('vs7', cpp_style._cpp_style_state.output_format) + self.assertRaises(SystemExit, + cpp_style.parse_arguments, ['--output=blah', 'foo.cpp']) + + filt = '-,+whitespace,-whitespace/indent' + self.assertEquals((['foo.h'], {}), + cpp_style.parse_arguments(['--filter='+filt, 'foo.h'])) + self.assertEquals(['-', '+whitespace', '-whitespace/indent'], + cpp_style._cpp_style_state.filters) + + self.assertEquals((['foo.cpp', 'foo.h'], {}), + cpp_style.parse_arguments(['foo.cpp', 'foo.h'])) + + self.assertEquals((['foo.cpp'], {'--foo': ''}), + cpp_style.parse_arguments(['--foo', 'foo.cpp'], ['foo'])) + self.assertEquals((['foo.cpp'], {'--foo': 'bar'}), + cpp_style.parse_arguments(['--foo=bar', 'foo.cpp'], ['foo='])) + self.assertEquals((['foo.cpp'], {}), + cpp_style.parse_arguments(['foo.cpp'], ['foo='])) + self.assertRaises(SystemExit, + cpp_style.parse_arguments, + ['--footypo=bar', 'foo.cpp'], ['foo=']) + finally: + cpp_style._USAGE = old_usage + cpp_style._ERROR_CATEGORIES = old_error_categories + cpp_style._cpp_style_state.output_format = old_output_format + cpp_style._cpp_style_state.verbose_level = old_verbose_level + cpp_style._cpp_style_state.filters = old_filters + + def test_filter(self): + old_filters = cpp_style._cpp_style_state.filters + try: + cpp_style._cpp_style_state.set_filters('-,+whitespace,-whitespace/indent') + self.assert_lint( + '// Hello there ', + 'Line ends in whitespace. Consider deleting these extra spaces.' + ' [whitespace/end_of_line] [4]') + self.assert_lint('int a = (int)1.0;', '') + self.assert_lint(' weird opening space', '') + finally: + cpp_style._cpp_style_state.filters = old_filters + + def test_default_filter(self): + default_filters = cpp_style._DEFAULT_FILTERS + old_filters = cpp_style._cpp_style_state.filters + cpp_style._DEFAULT_FILTERS = [ '-whitespace' ] + try: + # Reset filters + cpp_style._cpp_style_state.set_filters('') + self.assert_lint('// Hello there ', '') + cpp_style._cpp_style_state.set_filters('+whitespace/end_of_line') + self.assert_lint( + '// Hello there ', + 'Line ends in whitespace. Consider deleting these extra spaces.' + ' [whitespace/end_of_line] [4]') + self.assert_lint(' weird opening space', '') + finally: + cpp_style._cpp_style_state.filters = old_filters + cpp_style._DEFAULT_FILTERS = default_filters + + 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 + #ifdef DERIVE_FROM_GOO + : public Goo { + #else + : public Hoo { + #endif + };''', + '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.assert_) + cpp_style.process_file_data(file_path, 'h', [], error_collector) + expected_guard = '' + matcher = re.compile( + 'No \#ifndef header guard found\, suggested CPP variable is\: ([A-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.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef FOO_H', '#define FOO_H'], error_collector) + self.assertEquals( + 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.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef %s' % expected_guard], error_collector) + self.assertEquals( + 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.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef %s' % expected_guard, + '#define FOO_H'], + error_collector) + self.assertEquals( + 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 endif + error_collector = ErrorCollector(self.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef %s' % expected_guard, + '#define %s' % expected_guard], + error_collector) + self.assertEquals( + 1, + error_collector.result_list().count( + '#endif line should be "#endif // %s"' + ' [build/header_guard] [5]' % expected_guard), + error_collector.result_list()) + + # Commentless endif + error_collector = ErrorCollector(self.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef %s' % expected_guard, + '#define %s' % expected_guard, + '#endif'], + error_collector) + self.assertEquals( + 1, + error_collector.result_list().count( + '#endif line should be "#endif // %s"' + ' [build/header_guard] [5]' % expected_guard), + error_collector.result_list()) + + # Commentless endif for old-style guard + error_collector = ErrorCollector(self.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef %s_' % expected_guard, + '#define %s_' % expected_guard, + '#endif'], + error_collector) + self.assertEquals( + 1, + error_collector.result_list().count( + '#endif line should be "#endif // %s"' + ' [build/header_guard] [5]' % expected_guard), + error_collector.result_list()) + + # No header guard errors + error_collector = ErrorCollector(self.assert_) + cpp_style.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) + + # No header guard errors for old-style guard + error_collector = ErrorCollector(self.assert_) + cpp_style.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) + + old_verbose_level = cpp_style._cpp_style_state.verbose_level + try: + cpp_style._cpp_style_state.verbose_level = 0 + # Warn on old-style guard if verbosity is 0. + error_collector = ErrorCollector(self.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef %s_' % expected_guard, + '#define %s_' % expected_guard, + '#endif // %s_' % expected_guard], + error_collector) + self.assertEquals( + 1, + error_collector.result_list().count( + '#ifndef header guard has wrong style, please use: %s' + ' [build/header_guard] [0]' % expected_guard), + error_collector.result_list()) + finally: + cpp_style._cpp_style_state.verbose_level = old_verbose_level + + # Completely incorrect header guard + error_collector = ErrorCollector(self.assert_) + cpp_style.process_file_data(file_path, 'h', + ['#ifndef FOO', + '#define FOO', + '#endif // FOO'], + error_collector) + self.assertEquals( + 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()) + self.assertEquals( + 1, + error_collector.result_list().count( + '#endif line should be "#endif // %s"' + ' [build/header_guard] [5]' % expected_guard), + 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 unsigned_long_long;', + 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.assert_) + cpp_style.process_file_data(file_path, 'cpp', [], error_collector) + self.assertEquals( + 1, + error_collector.result_list().count(legal_copyright_message)) + + error_collector = ErrorCollector(self.assert_) + cpp_style.process_file_data( + file_path, 'cpp', + ['' for unused_i in range(10)] + [copyright_line], + error_collector) + self.assertEquals( + 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.assert_) + cpp_style.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.assert_) + cpp_style.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]') + +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.assertEquals(lines, clean_lines.raw_lines) + self.assertEquals(4, clean_lines.num_lines()) + + self.assertEquals(['Line 1', + 'Line 2', + 'Line 3 ', + 'Line 4 "foo"'], + clean_lines.lines) + + self.assertEquals(['Line 1', + 'Line 2', + 'Line 3 ', + 'Line 4 ""'], + clean_lines.elided) + + def test_init_empty(self): + clean_lines = cpp_style.CleansedLines([]) + self.assertEquals([], clean_lines.raw_lines) + self.assertEquals(0, clean_lines.num_lines()) + + def test_collapse_strings(self): + collapse = cpp_style.CleansedLines.collapse_strings + self.assertEquals('""', collapse('""')) # "" (empty) + self.assertEquals('"""', collapse('"""')) # """ (bad) + self.assertEquals('""', collapse('"xyz"')) # "xyz" (string) + self.assertEquals('""', collapse('"\\\""')) # "\"" (string) + self.assertEquals('""', collapse('"\'"')) # "'" (string) + self.assertEquals('"\"', collapse('"\"')) # "\" (bad) + self.assertEquals('""', collapse('"\\\\"')) # "\\" (string) + self.assertEquals('"', collapse('"\\\\\\"')) # "\\\" (bad) + self.assertEquals('""', collapse('"\\\\\\\\"')) # "\\\\" (string) + + self.assertEquals('\'\'', collapse('\'\'')) # '' (empty) + self.assertEquals('\'\'', collapse('\'a\'')) # 'a' (char) + self.assertEquals('\'\'', collapse('\'\\\'\'')) # '\'' (char) + self.assertEquals('\'', collapse('\'\\\'')) # '\' (bad) + self.assertEquals('', collapse('\\012')) # '\012' (char) + self.assertEquals('', collapse('\\xfF0')) # '\xfF0' (char) + self.assertEquals('', collapse('\\n')) # '\n' (char) + self.assertEquals('\#', collapse('\\#')) # '\#' (bad) + + self.assertEquals('StringReplace(body, "", "");', + collapse('StringReplace(body, "\\\\", "\\\\\\\\");')) + self.assertEquals('\'\' ""', + 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 + os.path.abspath = lambda value: value + + def tearDown(self): + os.path.abspath = self.os_path_abspath_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)) + + 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)) + # 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)) + self.assertEqual('Found WebCore config.h after a header this file implements.', + self.include_state.check_next_include_order(cpp_style._CONFIG_HEADER, False)) + + 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)) + self.assertEqual('Found WebCore config.h after other header.', + self.include_state.check_next_include_order(cpp_style._CONFIG_HEADER, False)) + + 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)) + self.assertEqual('Found other header before a header this file implements.', + self.include_state.check_next_include_order(cpp_style._OTHER_HEADER, False)) + self.assertEqual('Found header this file implements after other header.', + self.include_state.check_next_include_order(cpp_style._PRIMARY_HEADER, False)) + + 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_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:1 [build/include] [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)) + # 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]') + + 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 + + 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.assertEquals(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(cpp_style._verbose_level()) + 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_verbosity = cpp_style._set_verbose_level(0) + self.assert_function_length_check_definition_ok(self.trigger_lines(0) - 1) + cpp_style._set_verbose_level(old_verbosity) + + def test_function_length_check_definition_at_severity0(self): + old_verbosity = cpp_style._set_verbose_level(0) + self.assert_function_length_check_definition_ok(self.trigger_lines(0)) + cpp_style._set_verbose_level(old_verbosity) + + def test_function_length_check_definition_above_severity0(self): + old_verbosity = cpp_style._set_verbose_level(0) + self.assert_function_length_check_above_error_level(0) + cpp_style._set_verbose_level(old_verbosity) + + def test_function_length_check_definition_below_severity1v0(self): + old_verbosity = cpp_style._set_verbose_level(0) + self.assert_function_length_check_below_error_level(1) + cpp_style._set_verbose_level(old_verbosity) + + def test_function_length_check_definition_at_severity1v0(self): + old_verbosity = cpp_style._set_verbose_level(0) + self.assert_function_length_check_at_error_level(1) + cpp_style._set_verbose_level(old_verbosity) + + 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_blanks(self): + error_level = 1 + error_lines = self.trigger_lines(error_level) + 1 + trigger_level = self.trigger_lines(cpp_style._verbose_level()) + 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(cpp_style._verbose_level()) + self.assert_function_lengths_check( + ('my_namespace::my_other_namespace::MyVeryLongTypeName*\n' + 'my_namespace::my_other_namespace::MyFunction(int arg1, char* arg2)' + + self.function_body(error_lines)), + ('Small and focused functions are preferred: ' + 'my_namespace::my_other_namespace::MyFunction()' + ' 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(cpp_style._verbose_level()) + 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(cpp_style._verbose_level()) + 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+1, 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(cpp_style._verbose_level()) + self.assert_function_lengths_check( + ('TEST_F(' + + self.function_body(error_lines)), + ('Small and focused functions are preferred: ' + 'TEST_F 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_embedded_no_lints(self): + error_level = 1 + error_lines = self.trigger_lines(error_level) + 1 + trigger_level = self.trigger_lines(cpp_style._verbose_level()) + 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(10), 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 Qualified::Goo : public Foo { + virtual void goo(); + };''', + '') + + self.assert_multi_line_lint( + # Line-ending : + '''class Goo : + public Foo { + virtual void goo(); + };''', + 'Labels should always be indented at least one space. If this is a ' + 'member-initializer list in a constructor, the colon should be on the ' + 'line after the definition header. [whitespace/labels] [4]') + + 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_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 2. [runtime/virtual] [4]']) + + +class CppStyleStateTest(unittest.TestCase): + def test_error_count(self): + self.assertEquals(0, cpp_style.error_count()) + cpp_style._cpp_style_state.increment_error_count() + cpp_style._cpp_style_state.increment_error_count() + self.assertEquals(2, cpp_style.error_count()) + cpp_style._cpp_style_state.reset_error_count() + self.assertEquals(0, cpp_style.error_count()) + + +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]') + # FIXME: No tests for 8-spaces. + + # 3. In a header, code inside a namespace should 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' + '}', + '', + 'foo.h') + self.assert_multi_line_lint( + 'namespace WebCore {\n' + '#if 0\n' + ' class Document {\n' + ' };\n' + '#endif\n' + '}', + '', + 'foo.h') + self.assert_multi_line_lint( + 'namespace WebCore {\n' + 'class Document {\n' + '};\n' + '}', + 'In a header, code inside a namespace should be indented.' + ' [whitespace/indent] [4]', + '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' + '}', + '', + 'foo.cpp') + self.assert_multi_line_lint( + ' namespace WebCore {\n\n' + 'start: // Pointless code, but tests the label regexp.\n' + ' goto start;\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' + ' }', + '', + 'foo.cpp') + self.assert_multi_line_lint( + 'namespace WebCore {\n' + ' Document::Foo() { }\n' + '}', + 'In an implementation file, 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;', + '') + # 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( + ' x++; y++;', + 'More than one command on the same line [whitespace/newline] [4]') + # FIXME: Make this fail. + # self.assert_multi_line_lint( + # ' if (condition) doIt();\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( + '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]']) + # FIXME: Make this fail. + # self.assert_multi_line_lint( + # 'if (condition) doSomething(); else {\n' + # ' doSomethingElse();\n' + # '}\n', + # '') + + # 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', + '') + + # 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', + '') + 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 instead of NULL.' + ' [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 instead of NULL.' + ' [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') + + # 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)', + '') + + def test_names(self): + # FIXME: Implement this. + pass + + def test_other(self): + # FIXME: Implement this. + pass + + +def tearDown(): + """A global check to make sure all error-categories have been tested. + + The main tearDown() routine is the only code we can guarantee will be + run after all other tests have been executed. + """ + try: + if _run_verifyallcategoriesseen: + ErrorCollector(None).verify_all_categories_are_seen() + except NameError: + # If nobody set the global _run_verifyallcategoriesseen, then + # we assume we shouldn't run the test + pass + +if __name__ == '__main__': + import sys + # We don't want to run the verify_all_categories_are_seen() test unless + # we're running the full test suite: if we only run one test, + # obviously we're not going to see all the error categories. So we + # only run verify_all_categories_are_seen() when no commandline flags + # are passed in. + global _run_verifyallcategoriesseen + _run_verifyallcategoriesseen = (len(sys.argv) == 1) + + unittest.main() diff --git a/WebKitTools/Scripts/modules/diff_parser.py b/WebKitTools/Scripts/modules/diff_parser.py new file mode 100644 index 0000000..91898af --- /dev/null +++ b/WebKitTools/Scripts/modules/diff_parser.py @@ -0,0 +1,162 @@ +# 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 + + +_regexp_compile_cache = {} + + +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) + + +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. + """ + conversion_patterns = (("^diff --git a/(.+) b/(?P<FilePath>.+)", lambda matched: "Index: " + matched.group('FilePath') + "\n"), + ("^new file.*", lambda matched: "\n"), + ("^index [0-9a-f]{7}\.\.[0-9a-f]{7} [0-9]{6}", lambda matched: "===================================================================\n"), + ("^--- a/(?P<FilePath>.+)", lambda matched: "--- " + matched.group('FilePath') + "\n"), + ("^\+\+\+ b/(?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 + + +def get_diff_converter(first_diff_line): + """Gets a converter function of diff lines. + + Args: + first_diff_line: The first filename line of a diff file. + If this line is git formatted, we'll return a + converter from git to SVN. + """ + if match(r"^diff --git a/", first_diff_line): + return git_diff_to_svn_diff + return lambda input: input + + +_INITIAL_STATE = 1 +_DECLARED_FILE_PATH = 2 +_PROCESSING_CHUNK = 3 + + +class DiffFile: + """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. + """ + + 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)) + + +class DiffParser: + """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. + """ + state = _INITIAL_STATE + + self.files = {} + current_file = None + old_diff_line = None + new_diff_line = None + for line in diff_input: + line = line.rstrip("\n") + if state == _INITIAL_STATE: + transform_line = get_diff_converter(line) + line = transform_line(line) + + file_declaration = match(r"^Index: (?P<FilePath>.+)", line) + if file_declaration: + filename = file_declaration.group('FilePath') + current_file = DiffFile(filename) + self.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: + logging.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: + logging.error('Unexpected diff format when parsing a chunk: %r' % line) diff --git a/WebKitTools/Scripts/modules/diff_parser_unittest.py b/WebKitTools/Scripts/modules/diff_parser_unittest.py new file mode 100644 index 0000000..1c806f0 --- /dev/null +++ b/WebKitTools/Scripts/modules/diff_parser_unittest.py @@ -0,0 +1,131 @@ +# 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 unittest +import diff_parser + + +class DiffParserTest(unittest.TestCase): + + _PATCH = '''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 +'''.splitlines() + + + def test_diff_parser(self): + parser = diff_parser.DiffParser(self._PATCH) + self.assertEquals(3, len(parser.files)) + + self.assertTrue('WebCore/rendering/style/StyleFlexibleBoxData.h' in parser.files) + diff = parser.files['WebCore/rendering/style/StyleFlexibleBoxData.h'] + self.assertEquals(7, len(diff.lines)) + # The first two unchaged lines. + self.assertEquals((47, 47), diff.lines[0][0:2]) + self.assertEquals('', diff.lines[0][2]) + self.assertEquals((48, 48), diff.lines[1][0:2]) + self.assertEquals(' unsigned align : 3; // EBoxAlignment', diff.lines[1][2]) + # The deleted line + self.assertEquals((50, 0), diff.lines[3][0:2]) + self.assertEquals(' 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.assertEquals(7 + 7 + 9, len(diff.lines)) + # Around an added line. + self.assertEquals((60, 61), diff.lines[9][0:2]) + self.assertEquals((0, 62), diff.lines[10][0:2]) + self.assertEquals((61, 63), diff.lines[11][0:2]) + # Look through the last chunk, which contains both add's and delete's. + self.assertEquals((81, 83), diff.lines[14][0:2]) + self.assertEquals((82, 84), diff.lines[15][0:2]) + self.assertEquals((83, 85), diff.lines[16][0:2]) + self.assertEquals((84, 0), diff.lines[17][0:2]) + self.assertEquals((0, 86), diff.lines[18][0:2]) + self.assertEquals((0, 87), diff.lines[19][0:2]) + self.assertEquals((85, 88), diff.lines[20][0:2]) + self.assertEquals((86, 89), diff.lines[21][0:2]) + self.assertEquals((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.assertEquals(1, len(diff.lines)) + self.assertEquals((0, 1), diff.lines[0][0:2]) + + +if __name__ == '__main__': + unittest.main() diff --git a/WebKitTools/Scripts/modules/logging.py b/WebKitTools/Scripts/modules/logging.py new file mode 100644 index 0000000..ea03a48 --- /dev/null +++ b/WebKitTools/Scripts/modules/logging.py @@ -0,0 +1,39 @@ +# 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. +# +# WebKit's Python module for logging + +import sys + +def log(string): + print >> sys.stderr, string + +def error(string): + log("ERROR: " + string) + exit(1) diff --git a/WebKitTools/Scripts/modules/scm.py b/WebKitTools/Scripts/modules/scm.py new file mode 100644 index 0000000..ec1f362 --- /dev/null +++ b/WebKitTools/Scripts/modules/scm.py @@ -0,0 +1,396 @@ +# 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 os +import re +import subprocess + +# Import WebKit-specific modules. +from modules.logging import error, log + +def detect_scm_system(path): + if SVN.in_working_directory(path): + return SVN(cwd=path) + + if Git.in_working_directory(path): + return Git(cwd=path) + + return None + +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" + + +class ScriptError(Exception): + pass + + +class SCM: + def __init__(self, cwd, dryrun=False): + self.cwd = cwd + self.checkout_root = self.find_checkout_root(self.cwd) + self.dryrun = dryrun + + @staticmethod + def run_command(args, cwd=None, input=None, raise_on_failure=True, return_exit_code=False): + stdin = subprocess.PIPE if input else None + process = subprocess.Popen(args, stdout=subprocess.PIPE, stdin=stdin, cwd=cwd) + output = process.communicate(input)[0].rstrip() + exit_code = process.wait() + if raise_on_failure and exit_code: + raise ScriptError('Failed to run "%s" exit_code: %d cwd: %s' % (args, exit_code, cwd)) + if return_exit_code: + return exit_code + return output + + def script_path(self, script_name): + return os.path.join(self.checkout_root, "WebKitTools", "Scripts", script_name) + + def ensure_clean_working_directory(self, force): + if not force and not self.working_directory_is_clean(): + print self.run_command(self.status_command(), raise_on_failure=False) + raise ScriptError("Working directory has modifications, pass --force-clean or --no-clean to continue.") + + log("Cleaning working directory") + self.clean_working_directory() + + def ensure_no_local_commits(self, force): + if not self.supports_local_commits(): + return + commits = self.local_commits() + if not len(commits): + return + if not force: + error("Working directory has local commits, pass --force-clean to continue.") + self.discard_local_commits() + + def apply_patch(self, patch, force=False): + # It's possible that the patch was not made from the root directory. + # We should detect and handle that case. + curl_process = subprocess.Popen(['curl', patch['url']], stdout=subprocess.PIPE) + args = [self.script_path('svn-apply'), '--reviewer', patch['reviewer']] + if force: + args.append('--force') + patch_apply_process = subprocess.Popen(args, stdin=curl_process.stdout) + + return_code = patch_apply_process.wait() + if return_code: + raise ScriptError("Patch %s from bug %s failed to download and apply." % (patch['url'], patch['bug_id'])) + + def run_status_and_extract_filenames(self, status_command, status_regexp): + filenames = [] + for line in self.run_command(status_command).splitlines(): + match = re.search(status_regexp, line) + if not match: + continue + # status = match.group('status') + filename = match.group('filename') + filenames.append(filename) + return filenames + + @staticmethod + def in_working_directory(path): + raise NotImplementedError, "subclasses must implement" + + @staticmethod + def find_checkout_root(path): + raise NotImplementedError, "subclasses must implement" + + @staticmethod + def commit_success_regexp(): + raise NotImplementedError, "subclasses must implement" + + def working_directory_is_clean(self): + raise NotImplementedError, "subclasses must implement" + + def clean_working_directory(self): + raise NotImplementedError, "subclasses must implement" + + def update_webkit(self): + raise NotImplementedError, "subclasses must implement" + + def status_command(self): + raise NotImplementedError, "subclasses must implement" + + def changed_files(self): + raise NotImplementedError, "subclasses must implement" + + def display_name(self): + raise NotImplementedError, "subclasses must implement" + + def create_patch(self): + raise NotImplementedError, "subclasses must implement" + + def commit_with_message(self, message): + raise NotImplementedError, "subclasses 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(): + raise NotImplementedError, "subclasses must implement" + + def create_patch_from_local_commit(self, commit_id): + error("Your source control manager does not support creating a patch from a local commit.") + + def create_patch_since_local_commit(self, commit_id): + error("Your source control manager does not support creating a patch from a local commit.") + + def commit_locally_with_message(self, message): + error("Your source control manager does not support local commits.") + + def discard_local_commits(self): + pass + + def local_commits(self): + return [] + + +class SVN(SCM): + def __init__(self, cwd, dryrun=False): + SCM.__init__(self, cwd, dryrun) + self.cached_version = None + + @staticmethod + def in_working_directory(path): + return os.path.isdir(os.path.join(path, '.svn')) + + @staticmethod + def find_uuid(path): + if not SVN.in_working_directory(path): + return None + info = SVN.run_command(['svn', 'info', path]) + match = re.search("^Repository UUID: (?P<uuid>.+)$", info, re.MULTILINE) + if not match: + raise ScriptError('svn info did not contain a UUID.') + return match.group('uuid') + + @staticmethod + def find_checkout_root(path): + uuid = SVN.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 != SVN.find_uuid(path): + return last_path + last_path = path + (path, last_component) = os.path.split(path) + if last_path == path: + return None + + @staticmethod + def commit_success_regexp(): + return "^Committed revision (?P<svn_revision>\d+)\.$" + + def svn_version(self): + if not self.cached_version: + self.cached_version = self.run_command(['svn', '--version', '--quiet']) + + return self.cached_version + + def working_directory_is_clean(self): + return self.run_command(['svn', 'diff']) == "" + + def clean_working_directory(self): + self.run_command(['svn', 'revert', '-R', '.']) + + def update_webkit(self): + self.run_command(self.script_path("update-webkit")) + + def status_command(self): + return ['svn', 'status'] + + def changed_files(self): + if self.svn_version() > "1.6": + status_regexp = "^(?P<status>[ACDMR]).{6} (?P<filename>.+)$" + else: + status_regexp = "^(?P<status>[ACDMR]).{5} (?P<filename>.+)$" + return self.run_status_and_extract_filenames(self.status_command(), status_regexp) + + @staticmethod + def supports_local_commits(): + return False + + def display_name(self): + return "svn" + + def create_patch(self): + return self.run_command(self.script_path("svn-create-patch")) + + def commit_with_message(self, message): + if self.dryrun: + return "Dry run, no remote commit." + return self.run_command(['svn', 'commit', '-m', message]) + + +# All git-specific logic should go here. +class Git(SCM): + def __init__(self, cwd, dryrun=False): + SCM.__init__(self, cwd, dryrun) + + @classmethod + def in_working_directory(cls, path): + return cls.run_command(['git', 'rev-parse', '--is-inside-work-tree'], cwd=path) == "true" + + @classmethod + def find_checkout_root(cls, path): + # "git rev-parse --show-cdup" would be another way to get to the root + (checkout_root, dot_git) = os.path.split(cls.run_command(['git', 'rev-parse', '--git-dir'], cwd=path)) + # If we were using 2.6 # checkout_root = os.path.relpath(checkout_root, path) + if not os.path.isabs(checkout_root): # Sometimes git returns relative paths + checkout_root = os.path.join(path, checkout_root) + return checkout_root + + @staticmethod + def commit_success_regexp(): + return "^Committed r(?P<svn_revision>\d+)$" + + def discard_local_commits(self): + self.run_command(['git', 'reset', '--hard', 'trunk']) + + def local_commits(self): + return self.run_command(['git', 'log', '--pretty=oneline', 'HEAD...trunk']).splitlines() + + def working_directory_is_clean(self): + return self.run_command(['git', 'diff-index', 'HEAD']) == "" + + def clean_working_directory(self): + # Could run git clean here too, but that wouldn't match working_directory_is_clean + self.run_command(['git', 'reset', '--hard', 'HEAD']) + + def update_webkit(self): + # FIXME: Should probably call update-webkit, no? + log("Updating working directory") + self.run_command(['git', 'svn', 'rebase']) + + def status_command(self): + return ['git', 'status'] + + def changed_files(self): + status_command = ['git', 'diff', '-r', '--name-status', '-C', '-M', 'HEAD'] + status_regexp = '^(?P<status>[ADM])\t(?P<filename>.+)$' + return self.run_status_and_extract_filenames(status_command, status_regexp) + + @staticmethod + def supports_local_commits(): + return True + + def display_name(self): + return "git" + + def create_patch(self): + return self.run_command(['git', 'diff', 'HEAD']) + + def commit_with_message(self, message): + self.commit_locally_with_message(message) + return self.push_local_commits_to_server() + + # Git-specific methods: + + def create_patch_from_local_commit(self, commit_id): + return self.run_command(['git', 'diff', commit_id + "^.." + commit_id]) + + def create_patch_since_local_commit(self, commit_id): + return self.run_command(['git', 'diff', commit_id]) + + def commit_locally_with_message(self, message): + self.run_command(['git', 'commit', '--all', '-F', '-'], input=message) + + def push_local_commits_to_server(self): + if self.dryrun: + return "Dry run, no remote commit." + return self.run_command(['git', 'svn', 'dcommit']) + + # 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): + # FIXME: trunk is not always the remote branch name, need a way to detect the name. + args.append('trunk..HEAD') + + commit_ids = [] + for commitish in args: + if '...' in commitish: + raise ScriptError("'...' is not supported (found in '%s'). Did you mean '..'?" % commitish) + elif '..' in commitish: + commit_ids += self.run_command(['git', 'rev-list', commitish]).splitlines() + else: + # Turn single commits or branch or tag names into commit ids. + commit_ids += self.run_command(['git', 'rev-parse', '--revs-only', commitish]).splitlines() + return commit_ids + + def commit_message_for_local_commit(self, commit_id): + commit_lines = self.run_command(['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_command(['git', 'diff-tree', '--shortstat', '--no-commit-id', commit_id]) diff --git a/WebKitTools/Scripts/modules/scm_unittest.py b/WebKitTools/Scripts/modules/scm_unittest.py new file mode 100644 index 0000000..5bf2726 --- /dev/null +++ b/WebKitTools/Scripts/modules/scm_unittest.py @@ -0,0 +1,139 @@ +# 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 subprocess +import tempfile +import unittest +from modules.scm import detect_scm_system, SCM, ScriptError + + +# 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(args): + SCM.run_command(args) + +# Exists to share svn repository creation code between the git and svn tests +class SVNTestRepository: + @staticmethod + def _setup_test_commits(test_object): + # Add some test commits + os.chdir(test_object.svn_checkout_path) + test_file = open('test_file', 'w') + test_file.write("test1") + test_file.flush() + + run(['svn', 'add', 'test_file']) + run(['svn', 'commit', '--quiet', '--message', 'initial commit']) + + test_file.write("test2") + test_file.flush() + + run(['svn', 'commit', '--quiet', '--message', 'second commit']) + + test_file.write("test3") + test_file.close() + + run(['svn', 'commit', '--quiet', '--message', 'third commit']) + + @classmethod + def setup(cls, test_object): + # Create an test SVN repository + test_object.svn_repo_path = tempfile.mkdtemp(suffix="svn_test_repo") + test_object.svn_repo_url = "file://%s" % test_object.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(['svnadmin', 'create', '--pre-1.5-compatible', test_object.svn_repo_path]) + + # Create a test svn checkout + test_object.svn_checkout_path = tempfile.mkdtemp(suffix="svn_test_checkout") + run(['svn', 'checkout', '--quiet', test_object.svn_repo_url, test_object.svn_checkout_path]) + + cls._setup_test_commits(test_object) + + @classmethod + def tear_down(cls, test_object): + run(['rm', '-rf', test_object.svn_repo_path]) + run(['rm', '-rf', test_object.svn_checkout_path]) + + +class SVNTest(unittest.TestCase): + + def setUp(self): + SVNTestRepository.setup(self) + os.chdir(self.svn_checkout_path) + + def tearDown(self): + SVNTestRepository.tear_down(self) + + def test_detection(self): + scm = detect_scm_system(self.svn_checkout_path) + self.assertEqual(scm.display_name(), "svn") + self.assertEqual(scm.supports_local_commits(), False) + +class GitTest(unittest.TestCase): + + def _setup_git_clone_of_svn_repository(self): + self.git_checkout_path = tempfile.mkdtemp(suffix="git_test_checkout") + # --quiet doesn't make git svn silent, so we redirect output + args = ['git', 'svn', '--quiet', 'clone', self.svn_repo_url, self.git_checkout_path] + git_svn_clone = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + git_svn_clone.communicate() # ignore output + git_svn_clone.wait() + + def _tear_down_git_clone_of_svn_repository(self): + run(['rm', '-rf', self.git_checkout_path]) + + def setUp(self): + SVNTestRepository.setup(self) + self._setup_git_clone_of_svn_repository() + os.chdir(self.git_checkout_path) + + def tearDown(self): + SVNTestRepository.tear_down(self) + self._tear_down_git_clone_of_svn_repository() + + def test_detection(self): + scm = detect_scm_system(self.git_checkout_path) + self.assertEqual(scm.display_name(), "git") + self.assertEqual(scm.supports_local_commits(), True) + + def test_commitish_parsing(self): + scm = detect_scm_system(self.git_checkout_path) + + # Multiple revisions are cherry-picked. + self.assertEqual(len(scm.commit_ids_from_commitish_arguments(['HEAD~2'])), 1) + self.assertEqual(len(scm.commit_ids_from_commitish_arguments(['HEAD', 'HEAD~2'])), 2) + + # ... is an invalid range specifier + self.assertRaises(ScriptError, scm.commit_ids_from_commitish_arguments, ['trunk...HEAD']) + + +if __name__ == '__main__': + unittest.main() diff --git a/WebKitTools/Scripts/parallelcl b/WebKitTools/Scripts/parallelcl index 532079f..8a46365 100755 --- a/WebKitTools/Scripts/parallelcl +++ b/WebKitTools/Scripts/parallelcl @@ -88,7 +88,7 @@ if ($options =~ s/-j\s*([0-9]+)//) { chomp($numJobs = `num-cpus`); } -print STDERR "\n\n####### RUNNING AT MOST $numJobs PARALLEL INSTANCES OF cl.exe ###########\n\n";# if $debug; +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 diff --git a/WebKitTools/Scripts/pdevenv b/WebKitTools/Scripts/pdevenv index 1931211..9128912 100755 --- a/WebKitTools/Scripts/pdevenv +++ b/WebKitTools/Scripts/pdevenv @@ -9,10 +9,11 @@ use FindBin; my ($fh, $path) = tempfile(UNLINK => 0, SUFFIX => '.cmd') or die; chomp(my $vcBin = `cygpath -w "$FindBin::Bin/../vcbin"`); +chomp(my $scriptsPath = `cygpath -w "$FindBin::Bin"`); print $fh "\@echo off\n\n"; print $fh "call \"\%VS80COMNTOOLS\%\\vsvars32.bat\"\n\n"; -print $fh "set PATH=$vcBin;\%PATH\%\n\n"; +print $fh "set PATH=$vcBin;$scriptsPath;\%PATH\%\n\n"; print $fh "IF EXIST \"\%VSINSTALLDIR\%\\Common7\\IDE\\devenv.com\" (devenv.com /useenv " . join(" ", @ARGV) . ") ELSE "; print $fh "VCExpress.exe /useenv " . join(" ", @ARGV) . "\n"; diff --git a/WebKitTools/Scripts/prepare-ChangeLog b/WebKitTools/Scripts/prepare-ChangeLog index 3ecf189..c3e2cef 100755 --- a/WebKitTools/Scripts/prepare-ChangeLog +++ b/WebKitTools/Scripts/prepare-ChangeLog @@ -4,6 +4,7 @@ # # 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. # # prepare-ChangeLog is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public @@ -28,6 +29,7 @@ # 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> # @@ -39,8 +41,7 @@ # Handle yacc source files too (other languages?). # Help merge when there are ChangeLog conflicts or if there's # already a partly written ChangeLog entry. -# Add command line option to put the ChangeLog into a separate -# file or just spew it out stdout. +# Add 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 @@ -63,6 +64,8 @@ use POSIX qw(strftime); use VCSUtils; sub changeLogDate($); +sub changeLogEmailAddress($); +sub changeLogName($); sub firstDirectoryOrCwd(); sub diffFromToString(); sub diffCommand(@); @@ -86,35 +89,53 @@ sub get_function_line_ranges_for_javascript($$); sub method_decl_to_selector($); sub processPaths(\@); sub reviewerAndDescriptionForGitCommit($); +sub normalizeLineEndings($$); +sub normalizePath($); +sub decodeEntities($); # Project time zone for Cupertino, CA, US my $changeLogTimeZone = "PST8PDT"; +my $bugNumber; +my $name; +my $emailAddress; 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:i" => \$bugNumber, + "name:s" => \$name, + "email:s" => \$emailAddress, "git-commit: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) . " [-d|--diff] [-h|--help] [-o|--open] [--git-commit=<committish>] [--git-reviewer=<name>] [svndir1 [svndir2 ...]]\n"; + print STDERR basename($0) . " [--bug] [-d|--diff] [-h|--help] [-o|--open] [--git-commit=<committish>] [--git-reviewer=<name>] [svndir1 [svndir2 ...]]\n"; + print STDERR " --bug Fill in the ChangeLog bug information from the given bug.\n"; print STDERR " -d|--diff Spew diff to stdout when running\n"; print STDERR " --git-commit Populate the ChangeLogs from the specified git commit\n"; + print STDERR " --git-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"; exit 1; } +die "--git-commit and --git-index are incompatible." if ($gitIndex && $gitCommit); + my %paths = processPaths(@ARGV); my $isGit = isGitDirectory(firstDirectoryOrCwd()); @@ -122,6 +143,11 @@ my $isSVN = isSVNDirectory(firstDirectoryOrCwd()); $isSVN || $isGit || die "Couldn't determine your version control system."; +my $SVN = "svn"; +my $GIT = "git"; + +my $svnVersion = `svn --version --quiet` if $isSVN; + # Find the list of modified files my @changed_files; my $changed_files_string; @@ -129,8 +155,6 @@ my %changed_line_ranges; my %function_lists; my @conflict_files; -my $SVN = "svn"; -my $GIT = "git"; my %supportedTestExtensions = map { $_ => 1 } qw(html shtml svg xml xhtml pl php); my @addedRegressionTests = (); @@ -221,19 +245,21 @@ if (%changed_line_ranges) { # Get some parameters for the ChangeLog we are about to write. my $date = changeLogDate($changeLogTimeZone); -my $name = $ENV{CHANGE_LOG_NAME} - || $ENV{REAL_NAME} - || gitConfig("user.name") - || (split /\s*,\s*/, (getpwuid $<)[6])[0] - || "set REAL_NAME environment variable"; -my $email_address = $ENV{CHANGE_LOG_EMAIL_ADDRESS} - || $ENV{EMAIL_ADDRESS} - || gitConfig("user.email") - || "set EMAIL_ADDRESS environment variable"; - -if ($gitCommit) { - $name = `$GIT log --max-count=1 --pretty=\"format:%an\" \"$gitCommit\"`; - $email_address = `$GIT log --max-count=1 --pretty=\"format:%ae\" \"$gitCommit\"`; +$name = changeLogName($name); +$emailAddress = changeLogEmailAddress($emailAddress); + +print STDERR " Change author: $name <$emailAddress>.\n"; + +my $bugDescription; +my $bugURL; +if ($bugNumber) { + $bugURL = "https://bugs.webkit.org/show_bug.cgi?id=$bugNumber"; + my $bugXMLURL = "$bugURL&ctype=xml"; + # Perl has no built in XML processing, so we'll fetch and parse with curl and grep + my $descriptionLine = `curl --silent "$bugXMLURL" | grep short_desc`; + $descriptionLine =~ /<short_desc>(.*)<\/short_desc>/; + $bugDescription = decodeEntities($1); + print STDERR " Description from bug $bugNumber:\n \"$bugDescription\".\n"; } # Remove trailing parenthesized notes from user name (bit of hack). @@ -261,9 +287,35 @@ foreach my $file (sort keys %function_lists) { } } +# Build the list of ChangeLog prefixes in the correct project order +my @prefixes; +my %prefixesSort; +foreach my $prefix (keys %files) { + 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 "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}; +} + # Get the latest ChangeLog files from svn. my @logs = (); -foreach my $prefix (sort keys %files) { +foreach my $prefix (@prefixes) { push @logs, File::Spec->catfile($prefix || ".", "ChangeLog"); } @@ -274,7 +326,7 @@ if (@logs && $updateChangeLogs && $isSVN) { my @conflictedChangeLogs; while (my $line = <ERRORS>) { print STDERR " ", $line; - push @conflictedChangeLogs, $1 if $line =~ m/^C\s+(.+)\s*$/; + push @conflictedChangeLogs, $1 if $line =~ m/^C\s+(.*\S+)\s*$/; } close ERRORS; @@ -288,40 +340,69 @@ if (@logs && $updateChangeLogs && $isSVN) { } } -# Write out a new ChangeLog file. -foreach my $prefix (sort keys %files) { - my $changeLogPath = File::Spec->catfile($prefix || ".", "ChangeLog"); - print STDERR " Editing the ${changeLogPath} file.\n"; - open OLD_CHANGE_LOG, ${changeLogPath} or die "Could not open ${changeLogPath} file: $!.\n"; - # It's less efficient to read the whole thing into memory than it would be - # to read it while we prepend to it later, but I like doing this part first. - my @old_change_log = <OLD_CHANGE_LOG>; - close OLD_CHANGE_LOG; - open CHANGE_LOG, "> ${changeLogPath}" or die "Could not write ${changeLogPath}\n."; - print CHANGE_LOG "$date $name <$email_address>\n\n"; +# 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 || ".", "ChangeLog"); + print STDERR " Editing the ${changeLogPath} file.\n"; + open OLD_CHANGE_LOG, ${changeLogPath} or die "Could not open ${changeLogPath} file: $!.\n"; + # It's less efficient to read the whole thing into memory than it would be + # to read it while we prepend to it later, but I like doing this part first. + @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; + } + + print CHANGE_LOG normalizeLineEndings("$date $name <$emailAddress>\n\n", $endl); my ($reviewer, $description) = reviewerAndDescriptionForGitCommit($gitCommit) if $gitCommit; $reviewer = "NOBODY (OO" . "PS!)" if !$reviewer; - print CHANGE_LOG " Reviewed by $reviewer.\n\n"; - print CHANGE_LOG $description . "\n" if $description; + print CHANGE_LOG normalizeLineEndings(" Reviewed by $reviewer.\n\n", $endl); + print CHANGE_LOG normalizeLineEndings($description . "\n", $endl) if $description; + + $bugDescription = "Need a short description and 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); if ($prefix =~ m/WebCore/ || `pwd` =~ m/WebCore/) { if ($didChangeRegressionTests) { - print CHANGE_LOG testListForChangeLog(sort @addedRegressionTests); + print CHANGE_LOG normalizeLineEndings(testListForChangeLog(sort @addedRegressionTests), $endl); } else { - print CHANGE_LOG " WARNING: NO TEST CASES ADDED OR CHANGED\n\n"; + print CHANGE_LOG normalizeLineEndings(" No new tests. (OOPS!)\n\n", $endl); } } foreach my $file (sort @{$files{$prefix}}) { my $file_stem = substr $file, length $prefix; - print CHANGE_LOG " * $file_stem:$function_lists{$file}\n"; + print CHANGE_LOG normalizeLineEndings(" * $file_stem:$function_lists{$file}\n", $endl); } - print CHANGE_LOG "\n", @old_change_log; + + if ($writeChangeLogs) { + print CHANGE_LOG normalizeLineEndings("\n", $endl), @old_change_log; + } else { + print CHANGE_LOG "\n"; + } + close CHANGE_LOG; } +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 && @changed_files) { print STDERR " Running diff to help you write the ChangeLog entries.\n"; @@ -379,6 +460,64 @@ sub changeLogDate($) return $date; } +sub changeLogNameError($) +{ + my ($message) = @_; + print STDERR "$message\nEither:\n"; + print STDERR " set CHANGE_LOG_NAME in your environment\n"; + print STDERR " OR pass --name= on the command line\n"; + print STDERR " OR set REAL_NAME in your environment"; + print STDERR " OR git users can set 'git config user.name'\n"; + exit(1); +} + +sub changeLogName($) +{ + my ($nameFromArgs) = @_; + # Silently allow --git-commit to win, we could warn if $emailAddressFromArgs is defined. + return `$GIT log --max-count=1 --pretty=\"format:%an\" \"$gitCommit\"` if $gitCommit; + + my $name = $nameFromArgs + || $ENV{CHANGE_LOG_NAME} + || $ENV{REAL_NAME} + || gitConfig("user.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. + changeLogNameError("'$name' does not contain a space! ChangeLogs should contain your full name.") unless ($name =~ /\w \w/); + + return $name; +} + +sub changeLogEmailAddressError($) +{ + my ($message) = @_; + print STDERR "$message\nEither:\n"; + print STDERR " set CHANGE_LOG_EMAIL_ADDRESS in your environment\n"; + print STDERR " OR pass --email= on the command line\n"; + print STDERR " OR set EMAIL_ADDRESS in your environment\n"; + print STDERR " OR git users can set 'git config user.email'\n"; + exit(1); +} + +sub changeLogEmailAddress($) +{ + my ($emailAddressFromArgs) = @_; + # Silently allow --git-commit to win, we could warn if $emailAddressFromArgs is defined. + return `$GIT log --max-count=1 --pretty=\"format:%ae\" \"$gitCommit\"` if $gitCommit; + + my $emailAddress = $emailAddressFromArgs + || $ENV{CHANGE_LOG_EMAIL_ADDRESS} + || $ENV{EMAIL_ADDRESS} + || gitConfig("user.email"); + + changeLogEmailAddressError("Failed to determine email address for ChangeLog.") unless $emailAddress; + changeLogEmailAddressError("Email address '$emailAddress' does not contain '\@' and is likely invalid.") unless ($emailAddress =~ /\@/); + + return $emailAddress; +} + sub get_function_line_ranges($$) { my ($file_handle, $file_name) = @_; @@ -1130,6 +1269,7 @@ sub diffFromToString() return "" if $isSVN; return $gitCommit if $gitCommit =~ m/.+\.\..+/; return "\"$gitCommit^\" \"$gitCommit\"" if $gitCommit; + return "--cached" if $gitIndex; return "HEAD" if $isGit; } @@ -1183,7 +1323,7 @@ sub createPatchCommand($) sub diffHeaderFormat() { - return qr/^Index: (\S+)$/ if $isSVN; + return qr/^Index: (\S+)\s*$/ if $isSVN; return qr/^diff --git a\/.+ b\/(.+)$/ if $isGit; } @@ -1193,18 +1333,16 @@ sub findOriginalFileFromSvn($) my $baseUrl; open INFO, "$SVN info . |" or die; while (<INFO>) { - if (/^URL: (.+)/) { + if (/^URL: (.*\S+)\s*$/) { $baseUrl = $1; - last; } } close INFO; my $sourceFile; open INFO, "$SVN info '$file' |" or die; while (<INFO>) { - if (/^Copied From URL: (.+)/) { + if (/^Copied From URL: (.*\S+)\s*$/) { $sourceFile = File::Spec->abs2rel($1, $baseUrl); - last; } } close INFO; @@ -1216,16 +1354,24 @@ sub generateFileList(\@\@\%) my ($changedFiles, $conflictFiles, $functionLists) = @_; print STDERR " Running status to find changed, added, or removed files.\n"; open STAT, "-|", statusCommand(keys %paths) or die "The status failed: $!.\n"; - my $inGitCommitSection = 0; while (<STAT>) { my $status; my $original; my $file; if ($isSVN) { - if (/^([ACDMR]).{5} (.+)$/) { + my $matches; + if (eval "v$svnVersion" ge v1.6) { + $matches = /^([ACDMR]).{6} (.*\S+)\s*$/; $status = $1; $file = $2; + } else { + $matches = /^([ACDMR]).{5} (.*\S+)\s*$/; + $status = $1; + $file = $2; + } + if ($matches) { + $file = normalizePath($file); $original = findOriginalFileFromSvn($file) if substr($_, 3, 1) eq "+"; } else { print; # error output from svn stat @@ -1233,11 +1379,11 @@ sub generateFileList(\@\@\%) } elsif ($isGit) { if (/^([ADM])\t(.+)$/) { $status = $1; - $file = $2; + $file = normalizePath($2); } elsif (/^([CR])[0-9]{1,3}\t([^\t]+)\t([^\t\n]+)$/) { # for example: R90% newfile oldfile $status = $1; - $original = $2; - $file = $3; + $original = normalizePath($2); + $file = normalizePath($3); } else { print; # error output from git diff } @@ -1319,7 +1465,7 @@ sub isConflictStatus($) "U" => 1, ); - return 0 if $gitCommit; # an existing commit cannot have conflicts + return 0 if ($gitCommit || $gitIndex); # an existing commit or staged change cannot have conflicts return $svn{$status} if $isSVN; return $git{$status} if $isGit; } @@ -1443,3 +1589,28 @@ sub reviewerAndDescriptionForGitCommit($) return ($reviewer, $description); } + +sub normalizeLineEndings($$) +{ + my ($string, $endl) = @_; + $string =~ s/\r?\n/$endl/g; + return $string; +} + +sub normalizePath($) +{ + my ($path) = @_; + $path =~ s/\\/\//g; + return $path; +} + +sub decodeEntities($) +{ + my ($text) = @_; + $text =~ s/\</</g; + $text =~ s/\>/>/g; + $text =~ s/\"/\"/g; + $text =~ s/\'/\'/g; + $text =~ s/\&/\&/g; + return $text; +} diff --git a/WebKitTools/Scripts/resolve-ChangeLogs b/WebKitTools/Scripts/resolve-ChangeLogs index 306565c..9107fd2 100755 --- a/WebKitTools/Scripts/resolve-ChangeLogs +++ b/WebKitTools/Scripts/resolve-ChangeLogs @@ -40,19 +40,22 @@ use Getopt::Long; use POSIX; use VCSUtils; +sub canonicalRelativePath($); sub conflictFiles($); sub findChangeLog($); sub findUnmergedChangeLogs(); sub fixChangeLogPatch($); sub fixMergedChangeLogs($;@); sub fixOneMergedChangeLog($); +sub hasGitUnmergedFiles(); sub mergeChanges($$$); sub parseFixMerged($$;$); -sub removeChangeLogArguments(); +sub removeChangeLogArguments($); sub resolveChangeLog($); sub resolveConflict($); sub showStatus($;$); sub usageAndExit(); +sub normalizePath($); my $isGit = isGit(); my $isSVN = isSVN(); @@ -60,17 +63,23 @@ my $isSVN = isSVN(); my $SVN = "svn"; my $GIT = "git"; +my $svnVersion = `svn --version --quiet` if $isSVN; + my $fixMerged; +my $gitRebaseContinue = 0; my $printWarnings = 1; my $showHelp; my $getOptionsResult = GetOptions( + 'c|continue!' => \$gitRebaseContinue, 'f|fix-merged:s' => \&parseFixMerged, 'h|help' => \$showHelp, 'w|warnings!' => \$printWarnings, ); -my @changeLogFiles = removeChangeLogArguments(); +my $relativePath = chdirReturningRelativePath(determineVCSRoot()); + +my @changeLogFiles = removeChangeLogArguments($relativePath); if (!defined $fixMerged && scalar(@changeLogFiles) == 0) { @changeLogFiles = findUnmergedChangeLogs(); @@ -82,6 +91,9 @@ if (scalar(@ARGV) > 0) { } elsif (!defined $fixMerged && 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; @@ -91,6 +103,8 @@ 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 -h|--help show this help message @@ -120,8 +134,24 @@ if (defined $fixMerged && length($fixMerged) > 0) { 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) = @_; @@ -134,7 +164,7 @@ sub conflictFiles($) } if ($isSVN) { - open STAT, "-|", $SVN, "status", $file || die; + open STAT, "-|", $SVN, "status", $file or die $!; my $status = <STAT>; close STAT; if (!$status || $status !~ m/^C\s+/) { @@ -145,9 +175,12 @@ sub conflictFiles($) $fileMine = "${file}.mine" if -e "${file}.mine"; my $currentRevision; - open INFO, "-|", $SVN, "info", $file || die; + open INFO, "-|", $SVN, "info", $file or die $!; while (my $line = <INFO>) { - $currentRevision = $1 if $line =~ m/^Revision: ([0-9]+)/; + 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}"; @@ -161,7 +194,7 @@ sub conflictFiles($) } elsif ($isGit) { my $gitPrefix = `$GIT rev-parse --show-prefix`; chomp $gitPrefix; - open GIT, "-|", $GIT, "ls-files", "--unmerged", $file || die; + open GIT, "-|", $GIT, "ls-files", "--unmerged", $file or die $!; while (my $line = <GIT>) { my ($mode, $hash, $stage, $fileName) = split(' ', $line); my $outputFile; @@ -178,8 +211,9 @@ sub conflictFiles($) die "Unknown file stage: $stage"; } system("$GIT cat-file blob :${stage}:${gitPrefix}${file} > $outputFile"); + die $! if WEXITSTATUS($?); } - close GIT; + close GIT or die $!; } else { die "Unknown version control system"; } @@ -219,15 +253,24 @@ sub findUnmergedChangeLogs() open STAT, "-|", $statCommand or die "The status failed: $!.\n"; while (<STAT>) { if ($isSVN) { - if (/^([C]).{5} (.+)$/) { - my $file = findChangeLog($2); + my $matches; + my $file; + if (eval "v$svnVersion" ge v1.6) { + $matches = /^([C]).{6} (.*\S+)\s*$/; + $file = $2; + } else { + $matches = /^([C]).{5} (.*\S+)\s*$/; + $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($2); + my $file = findChangeLog(normalizePath($2)); push @results, $file if $file; } else { print; # error output from git diff @@ -297,9 +340,9 @@ sub fixMergedChangeLogs($;@) if (scalar(@changedFiles) < 1) { # Read in list of files changed in $revisionRange - open GIT, "-|", $GIT, "diff", "--name-only", $revisionRange || die; + open GIT, "-|", $GIT, "diff", "--name-only", $revisionRange or die $!; push @changedFiles, <GIT>; - close GIT || die; + close GIT or die $!; die "No changed files in $revisionRange" if scalar(@changedFiles) < 1; chomp @changedFiles; } @@ -307,7 +350,7 @@ sub fixMergedChangeLogs($;@) 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"); + 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) { @@ -323,13 +366,14 @@ sub fixOneMergedChangeLog($) # Read in patch for incorrectly merged ChangeLog entry { local $/ = undef; - open GIT, "-|", $GIT, "diff", ($ENV{GIT_COMMIT} || "HEAD") . "^", $file || die; + open GIT, "-|", $GIT, "diff", ($ENV{GIT_COMMIT} || "HEAD") . "^", $file or die $!; $patch = <GIT>; - close GIT || die; + 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. @@ -358,28 +402,36 @@ sub fixOneMergedChangeLog($) $newPatch .= join("", @patchLines); # Add 3 lines of context to the end - open FILE, "<", $file || die; + 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 > /dev/null") || die; + open(PATCH, "| patch -p1 $file > /dev/null") or die $!; print PATCH $newPatch; - close(PATCH) || die; + 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 mergeChanges($$$) { my ($fileMine, $fileOlder, $fileNewer) = @_; @@ -390,13 +442,13 @@ sub mergeChanges($$$) my $patch; if ($traditionalReject) { - open(DIFF, "<", $fileMine); + open(DIFF, "<", $fileMine) or die $!; $patch = <DIFF>; close(DIFF); rename($fileMine, "$fileMine.save"); rename($fileOlder, "$fileOlder.save"); } else { - open(DIFF, "-|", qw(diff -u), $fileOlder, $fileMine) || die; + open(DIFF, "-|", qw(diff -u -a --binary), $fileOlder, $fileMine) or die $!; $patch = <DIFF>; close(DIFF); } @@ -404,7 +456,7 @@ sub mergeChanges($$$) unlink("${fileNewer}.orig"); unlink("${fileNewer}.rej"); - open(PATCH, "| patch --fuzz=3 $fileNewer > /dev/null") || die; + open(PATCH, "| patch --fuzz=3 --binary $fileNewer > /dev/null") or die $!; print PATCH fixChangeLogPatch($patch); close(PATCH); @@ -444,12 +496,13 @@ sub parseFixMerged($$;$) } } -sub removeChangeLogArguments() +sub removeChangeLogArguments($) { + my ($baseDir) = @_; my @results = (); for (my $i = 0; $i < scalar(@ARGV); ) { - my $file = findChangeLog($ARGV[$i]); + my $file = findChangeLog(canonicalRelativePath(File::Spec->catfile($baseDir, $ARGV[$i]))); if (defined $file) { splice(@ARGV, $i, 1); push @results, $file; @@ -472,7 +525,7 @@ sub resolveChangeLog($) if (mergeChanges($fileMine, $fileOlder, $fileNewer)) { if ($file ne $fileNewer) { unlink($file); - rename($fileNewer, $file) || die; + rename($fileNewer, $file) or die $!; } unlink($fileMine, $fileOlder); resolveConflict($file); @@ -490,8 +543,10 @@ sub resolveConflict($) if ($isSVN) { system($SVN, "resolved", $file); + die $! if WEXITSTATUS($?); } elsif ($isGit) { system($GIT, "add", $file); + die $! if WEXITSTATUS($?); } else { die "Unknown version control system"; } @@ -511,3 +566,10 @@ sub showStatus($;$) die "Unknown version control system"; } } + +sub normalizePath($) +{ + my ($path) = @_; + $path =~ s/\\/\//g; + return $path; +} diff --git a/WebKitTools/Scripts/roll-over-ChangeLogs b/WebKitTools/Scripts/roll-over-ChangeLogs new file mode 100755 index 0000000..7e6d32f --- /dev/null +++ b/WebKitTools/Scripts/roll-over-ChangeLogs @@ -0,0 +1,47 @@ +#!/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/WebKitTools/Scripts/run-javascriptcore-tests b/WebKitTools/Scripts/run-javascriptcore-tests index c0cb9a4..21d63c2 100755 --- a/WebKitTools/Scripts/run-javascriptcore-tests +++ b/WebKitTools/Scripts/run-javascriptcore-tests @@ -40,8 +40,22 @@ use POSIX; setConfiguration(); my $configuration = configuration(); -my $jsDriverArgs = ""; +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.7.js", +); + +my $jsDriverArgs = "-L " . join(" ", @testsToSkip); my $root; # intentionally left undefined +my $skipBuild = 0; my $showHelp = 0; my $programName = basename($0); @@ -55,6 +69,7 @@ EOF GetOptions( 'j|jsDriver-args=s' => \$jsDriverArgs, 'root=s' => \$root, + 'skip-build' => \$skipBuild, 'help' => \$showHelp ); @@ -71,7 +86,7 @@ if ($showHelp) { setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root)); -if (!defined($root)){ +if (!defined($root) && !$skipBuild) { chdirWebKit(); push(@buildArgs, argumentsForConfiguration()); diff --git a/WebKitTools/Scripts/run-launcher b/WebKitTools/Scripts/run-launcher index 9680cc2..24a4c32 100755 --- a/WebKitTools/Scripts/run-launcher +++ b/WebKitTools/Scripts/run-launcher @@ -49,11 +49,13 @@ if (isQt()) { my $libDir = catdir(productDir(), 'lib'); $launcherPath = catdir($launcherPath, "bin", "QtLauncher"); - # Set up LD_LIBRARY_PATH to point to the product directory. - print "Starting webkit launcher with LD_LIBRARY_PATH set to point to built WebKit in $libDir.\n"; - - $ENV{LD_LIBRARY_PATH} = $ENV{LD_LIBRARY_PATH} ? "$libDir:$ENV{LD_LIBRARY_PATH}" : $libDir; - $ENV{DYLD_LIBRARY_PATH} = $ENV{DYLD_LIBRARY_PATH} ? "$libDir:$ENV{DYLD_LIBRARY_PATH}" : $libDir; + 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()) { diff --git a/WebKitTools/Scripts/run-sunspider b/WebKitTools/Scripts/run-sunspider index 2e58418..154c9fa 100755 --- a/WebKitTools/Scripts/run-sunspider +++ b/WebKitTools/Scripts/run-sunspider @@ -115,7 +115,8 @@ chdir("SunSpider"); my $productDir = productDir(); # FIXME: This hack should be pushed down into productDir() -$productDir .= "/JavaScriptCore" if (isQt() or isGtk()); +$productDir .= "/JavaScriptCore" if isQt(); +$productDir .= "/Programs" if isGtk(); setupEnvironmentForExecution($productDir); my @args = ("--shell", jscPath($productDir), "--runs", $testRuns); diff --git a/WebKitTools/Scripts/run-webkit-httpd b/WebKitTools/Scripts/run-webkit-httpd index a64eef6..62eae14 100755 --- a/WebKitTools/Scripts/run-webkit-httpd +++ b/WebKitTools/Scripts/run-webkit-httpd @@ -83,6 +83,7 @@ if (-f "/tmp/WebKit/httpd.pid") { } my $testDirectory = getcwd() . "/LayoutTests"; +my $jsTestResourcesDirectory = $testDirectory . "/fast/js/resources"; my $httpdPath = "/usr/sbin/httpd"; $httpdPath = "/usr/sbin/apache2" if isDebianBased(); my $httpdConfig = "$testDirectory/http/conf/httpd.conf"; @@ -106,6 +107,8 @@ print "Press Ctrl+C to stop it.\n\n"; my @args = ( "-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 laoded. + "-c", "Alias /js-test-resources \"$jsTestResourcesDirectory\"", "-C", "Listen $listen", "-c", "TypesConfig \"$typesConfig\"", "-c", "CustomLog |/usr/bin/tee common", diff --git a/WebKitTools/Scripts/run-webkit-nightly.cmd b/WebKitTools/Scripts/run-webkit-nightly.cmd index 93037ab..924178a 100755 --- a/WebKitTools/Scripts/run-webkit-nightly.cmd +++ b/WebKitTools/Scripts/run-webkit-nightly.cmd @@ -1,10 +1,10 @@ @echo off -set script="%TMP%\run-webkit-nightly2.cmd" -set vsvars="%VS80COMNTOOLS%\vsvars32.bat" -if exist %vsvars% ( - copy %vsvars% "%script%" +set script=%TMP%\run-webkit-nightly2.cmd +set vsvars=%VS80COMNTOOLS%\vsvars32.bat +if exist "%vsvars%" ( + copy "%vsvars%" "%script%" ) else ( del "%script%" ) FindSafari.exe %1 /printSafariLauncher >> "%script%" -call %script% +call "%script%" diff --git a/WebKitTools/Scripts/run-webkit-tests b/WebKitTools/Scripts/run-webkit-tests index d6dae4e..f51cf53 100755 --- a/WebKitTools/Scripts/run-webkit-tests +++ b/WebKitTools/Scripts/run-webkit-tests @@ -4,6 +4,7 @@ # 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. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -48,6 +49,7 @@ use strict; use warnings; use Cwd; +use Data::Dumper; use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK); use File::Basename; use File::Copy; @@ -65,8 +67,11 @@ use List::Util 'shuffle'; use lib $FindBin::Bin; use webkitdirs; +use VCSUtils; use POSIX; +sub launchWithCurrentEnv(@); +sub openDiffTool(); sub openDumpTool(); sub closeDumpTool(); sub dumpToolDidCrash(); @@ -133,33 +138,40 @@ my $root; my $reverseTests = 0; my $randomizeTests = 0; my $mergeDepth; +my $timeoutSeconds = 15; +my $useRemoteLinksToTests = 0; my @leaksFilenames; -# Default to --no-http for Qt, Gtk and wx for now. -$testHTTP = 0 if (isQt() || isGtk() || isWx()); +# Default to --no-http for Qt, and wx for now. +$testHTTP = 0 if (isQt() || isWx()); my $expectedTag = "expected"; my $actualTag = "actual"; +my $prettyDiffTag = "pretty-diff"; my $diffsTag = "diffs"; my $errorTag = "stderr"; my @macPlatforms = ("mac-tiger", "mac-leopard", "mac-snowleopard", "mac"); -if (isTiger()) { - $platform = "mac-tiger"; - $tolerance = 1.0; -} elsif (isLeopard()) { - $platform = "mac-leopard"; - $tolerance = 0.1; -} elsif (isSnowLeopard()) { - $platform = "mac-snowleopard"; - $tolerance = 0.1; -} elsif (isAppleMacWebKit()) { - $platform = "mac"; +if (isAppleMacWebKit()) { + if (isTiger()) { + $platform = "mac-tiger"; + $tolerance = 1.0; + } elsif (isLeopard()) { + $platform = "mac-leopard"; + $tolerance = 0.1; + } elsif (isSnowLeopard()) { + $platform = "mac-snowleopard"; + $tolerance = 0.1; + } else { + $platform = "mac"; + } } elsif (isQt()) { $platform = "qt"; } elsif (isGtk()) { $platform = "gtk"; +} elsif (isWx()) { + $platform = "wx"; } elsif (isCygwin()) { $platform = "win"; } @@ -207,9 +219,11 @@ Usage: $programName [options] [testdir|testpath ...] --strict Do a comparison with the output on Mac (Qt only) --[no-]strip-editing-callbacks Remove editing callbacks from expected results -t|--threaded Run a concurrent JavaScript thead with each test + --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. EOF setConfiguration(); @@ -245,6 +259,8 @@ my $getOptionsResult = GetOptions( 'root=s' => \$root, 'add-platform-exceptions' => \$addPlatformExceptions, 'merge-leak-depth|m:5' => \$mergeDepth, + 'timeout=i' => \$timeoutSeconds, + 'use-remote-links-to-tests' => \$useRemoteLinksToTests, ); if (!$getOptionsResult || $showHelp) { @@ -270,6 +286,9 @@ if ($shouldCheckLeaks && $testsPerDumpTool > 1000) { # Stack logging does not play well with QuickTime on Tiger (rdar://problem/5537157) $testMedia = 0 if $shouldCheckLeaks && isTiger(); +# Generating remote links causes a lot of unnecessary spew on GTK and Qt build bot +$useRemoteLinksToTests = 0 if (isGtk() || isQt()); + setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root)); my $productDir = productDir(); $productDir .= "/bin" if isQt(); @@ -299,6 +318,11 @@ die "can't find executable $imageDiffTool (looked in $productDir)\n" if $pixelTe checkFrameworks() unless isCygwin(); +if (isAppleMacWebKit()) { + push @INC, $productDir; + eval 'use DumpRenderTreeSupport;'; +} + my $layoutTestsName = "LayoutTests"; my $testDirectory = File::Spec->rel2abs($layoutTestsName); my $expectedDirectory = $testDirectory; @@ -346,14 +370,6 @@ if (checkWebCoreSVGSupport(0)) { $ignoredLocalDirectories{'svg'} = 1; } -if (checkWebCoreWMLSupport(0)) { - $supportedFileExtensions{'wml'} = 1; -} else { - $ignoredDirectories{'http/tests/wml'} = 1; - $ignoredDirectories{'fast/wml'} = 1; - $ignoredDirectories{'wml'} = 1; -} - if (!$testHTTP) { $ignoredDirectories{'http'} = 1; } @@ -372,14 +388,40 @@ if (!checkWebCore3DRenderingSupport(0)) { $ignoredDirectories{'transforms/3d'} = 1; } +if (checkWebCoreWMLSupport(0)) { + $supportedFileExtensions{'wml'} = 1; +} else { + $ignoredDirectories{'http/tests/wml'} = 1; + $ignoredDirectories{'fast/wml'} = 1; + $ignoredDirectories{'wml'} = 1; +} + +if (!checkWebCoreXHTMLMPSupport(0)) { + $ignoredDirectories{'fast/xhtmlmp'} = 1; +} + +if (!checkWebCoreWCSSSupport(0)) { + $ignoredDirectories{'fast/wcss'} = 1; +} + if ($ignoreTests) { processIgnoreTests($ignoreTests, "ignore-tests"); } +sub fileShouldBeIgnored { + my($filePath) = @_; + foreach my $ignoredDir (keys %ignoredDirectories) { + if ($filePath =~ m/^$ignoredDir/) { + return 1; + } + } + return 0; +} + if (!$ignoreSkipped) { foreach my $level (@platformTestHierarchy) { if (open SKIPPED, "<", "$level/Skipped") { - if ($verbose && !$skippedOnly) { + if ($verbose) { my ($dir, $name) = splitpath($level); print "Skipped tests in $name:\n"; } @@ -391,7 +433,11 @@ if (!$ignoreSkipped) { $skipped =~ s/[ \n\r]+$//; if ($skipped && $skipped !~ /^#/) { if ($skippedOnly) { - push(@ARGV, $skipped); + if (!&fileShouldBeIgnored($skipped)) { + push(@ARGV, $skipped); + } elsif ($verbose) { + print " $skipped\n"; + } } else { if ($verbose) { print " $skipped\n"; @@ -477,17 +523,11 @@ push @diffToolArgs, "--tolerance", $tolerance; $| = 1; -my $imageDiffToolPID; -if ($pixelTests) { - local %ENV; - $ENV{MallocStackLogging} = 1 if $shouldCheckLeaks; - $imageDiffToolPID = open2(\*DIFFIN, \*DIFFOUT, $imageDiffTool, @diffToolArgs) or die "unable to open $imageDiffTool\n"; - $ENV{MallocStackLogging} = 0 if $shouldCheckLeaks; -} - my $dumpToolPID; my $isDumpToolOpen = 0; my $dumpToolCrashed = 0; +my $imageDiffToolPID; +my $isDiffToolOpen = 0; my $atLineStart = 1; my $lastDirectory = ""; @@ -698,6 +738,7 @@ for my $test (@tests) { open EXPECTEDPNG, "$expectedPixelDir/$base-$expectedTag.png"; read(EXPECTEDPNG, $expectedPNG, $expectedPNGSize); + openDiffTool(); print DIFFOUT "Content-Length: $actualPNGSize\n"; print DIFFOUT $actualPNG; @@ -801,7 +842,8 @@ for my $test (@tests) { writeToFile("$expectedDir/$expectedFileName", $actual); } deleteExpectedAndActualResults($base); - if ($generateNewResults && !$resetResults) { + 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) { @@ -809,7 +851,11 @@ for my $test (@tests) { print "$test -> "; } my $resultsDir = catdir($expectedDir, dirname($base)); - print "new (results generated in $resultsDir)\n"; + if ($generateNewResults) { + print "new (results generated in $resultsDir)\n"; + } else { + print "new\n"; + } $atLineStart = 1; } } elsif ($actual eq $expected && $diffResult eq "passed") { @@ -822,17 +868,29 @@ for my $test (@tests) { } else { $result = "mismatch"; - my $message = $actual eq $expected ? "pixel test failed" : "failed"; + my $pixelTestFailed = $pixelTests && $diffPNG && $diffPNG ne ""; + my $testFailed = $actual ne $expected; - if ($actual ne $expected && $addPlatformExceptions) { + 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)); - my $expectedFile = catfile($platformTestDirectory, "$expectedFileName"); - writeToFile("$expectedFile", $actual); + if ($testFailed) { + my $expectedFile = catfile($platformTestDirectory, "$expectedFileName"); + writeToFile("$expectedFile", $actual); + } + if ($pixelTestFailed) { + my $expectedFile = catfile($platformTestDirectory, "$base-$expectedTag.checksum"); + writeToFile("$expectedFile", $actualHash); + + $expectedFile = catfile($platformTestDirectory, "$base-$expectedTag.png"); + writeToFile("$expectedFile", $actualPNG); + } $message .= " (results generated in $platformTestDirectory)"; } } @@ -847,7 +905,7 @@ for my $test (@tests) { deleteExpectedAndActualResults($base); recordActualResultsAndDiff($base, $actual); - if ($pixelTests && $diffPNG && $diffPNG ne "") { + if ($pixelTestFailed) { $imagesPresent{$base} = 1; writeToFile("$testResultsDirectory/$base-$actualTag.png", $actualPNG); @@ -925,7 +983,7 @@ closeHTTPD(); # system "rm /tmp/LayoutTests"; # FIXME: Do we really want to check the image-comparison tool for leaks every time? -if ($shouldCheckLeaks && $pixelTests) { +if ($isDiffToolOpen && $shouldCheckLeaks) { $totalLeaks += countAndPrintLeaks("ImageDiff", $imageDiffToolPID, "$testResultsDirectory/ImageDiff-leaks.txt"); } @@ -995,7 +1053,7 @@ for my $type ("match", "mismatch", "new", "timedout", "crash", "error") { mkpath $testResultsDirectory; -open HTML, ">", $testResults or die; +open HTML, ">", $testResults or die "Failed to open $testResults. $!"; print HTML "<html>\n"; print HTML "<head>\n"; print HTML "<title>Layout Test Results</title>\n"; @@ -1123,7 +1181,7 @@ sub countAndPrintLeaks($$$) sub writeToFile($$) { my ($filePath, $contents) = @_; - open NEWFILE, ">", "$filePath" or die "could not create $filePath\n"; + open NEWFILE, ">", "$filePath" or die "Could not create $filePath. $!\n"; print NEWFILE $contents; close NEWFILE; } @@ -1191,16 +1249,45 @@ sub slowestcmp($$) return pathcmp($testa, $testb); } +sub launchWithCurrentEnv(@) +{ + my (@args) = @_; + + # 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(WebKitTools Scripts execAppWithEnv)); + unshift @args, $execScript; + return @args; +} + +sub openDiffTool() +{ + return if $isDiffToolOpen; + return if !$pixelTests; + + local %ENV; + $ENV{MallocStackLogging} = 1 if $shouldCheckLeaks; + $imageDiffToolPID = open2(\*DIFFIN, \*DIFFOUT, $imageDiffTool, launchWithCurrentEnv(@diffToolArgs)) or die "unable to open $imageDiffTool\n"; + $ENV{MallocStackLogging} = 0 if $shouldCheckLeaks; + $isDiffToolOpen = 1; +} + sub openDumpTool() { return if $isDumpToolOpen; - # Save some requires variables for the linux environment... + # Save environment variables required for the linux environment. my $homeDir = $ENV{'HOME'}; my $libraryPath = $ENV{'LD_LIBRARY_PATH'}; my $dyldLibraryPath = $ENV{'DYLD_LIBRARY_PATH'}; my $dbusAddress = $ENV{'DBUS_SESSION_BUS_ADDRESS'}; my $display = $ENV{'DISPLAY'}; + my $xauthority = $ENV{'XAUTHORITY'}; my $testfonts = $ENV{'WEBKIT_TESTFONTS'}; my $homeDrive = $ENV{'HOMEDRIVE'}; @@ -1213,6 +1300,9 @@ sub openDumpTool() } else { $ENV{DISPLAY} = ":1"; } + if (defined $xauthority) { + $ENV{XAUTHORITY} = $xauthority; + } $ENV{'WEBKIT_TESTFONTS'} = $testfonts if defined($testfonts); $ENV{HOME} = $homeDir; if (defined $libraryPath) { @@ -1225,6 +1315,9 @@ sub openDumpTool() $ENV{DBUS_SESSION_BUS_ADDRESS} = $dbusAddress; } } + if (isQt()) { + $ENV{QTWEBKIT_PLUGIN_PATH} = productDir() . "/lib/plugins"; + } $ENV{DYLD_FRAMEWORK_PATH} = $productDir; $ENV{XML_CATALOG_FILES} = ""; # work around missing /etc/catalog <rdar://problem/4292995> $ENV{DYLD_INSERT_LIBRARIES} = "/usr/lib/libgmalloc.dylib" if $guardMalloc; @@ -1239,13 +1332,16 @@ sub openDumpTool() } my @args = ($dumpTool, @toolArgs); + if (isAppleMacWebKit() and !isTiger()) { + unshift @args, "arch", "-" . architecture(); + } if ($useValgrind) { unshift @args, "valgrind"; } $ENV{MallocStackLogging} = 1 if $shouldCheckLeaks; - $dumpToolPID = open3(\*OUT, \*IN, \*ERROR, @args) or die "Failed to start tool: $dumpTool\n"; + $dumpToolPID = open3(\*OUT, \*IN, \*ERROR, launchWithCurrentEnv(@args)) or die "Failed to start tool: $dumpTool\n"; $ENV{MallocStackLogging} = 0 if $shouldCheckLeaks; $isDumpToolOpen = 1; $dumpToolCrashed = 0; @@ -1280,12 +1376,7 @@ sub dumpToolDidCrash() # On Mac OS X, crashing may be significantly delayed by crash reporter. return 0 unless isAppleMacWebKit(); - my $tryingToExit = 0; - open PS, "ps -o state -p $dumpToolPID |"; - <PS>; # skip header - $tryingToExit = 1 if <PS> =~ /E/; - close PS; - return $tryingToExit; + return DumpRenderTreeSupport::processIsCrashing($dumpToolPID); } sub openHTTPDIfNeeded() @@ -1328,6 +1419,7 @@ sub openHTTPDIfNeeded() $httpdConfig = "$testDirectory/http/conf/apache2-httpd.conf" if `$httpdPath -v` =~ m|Apache/2|; } my $documentRoot = "$testDirectory/http/tests"; + my $jsTestResourcesDirectory = $testDirectory . "/fast/js/resources"; my $typesConfig = "$testDirectory/http/conf/mime.types"; my $listen = "127.0.0.1:$httpdPort"; my $absTestResultsDirectory = File::Spec->rel2abs(glob $testResultsDirectory); @@ -1338,6 +1430,8 @@ sub openHTTPDIfNeeded() my @args = ( "-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 laoded. + "-c", "Alias /js-test-resources \"$jsTestResourcesDirectory\"", "-C", "Listen $listen", "-c", "TypesConfig \"$typesConfig\"", "-c", "CustomLog \"$absTestResultsDirectory/access_log.txt\" common", @@ -1568,8 +1662,20 @@ sub toWindowsPath($) 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"); } @@ -1617,7 +1723,8 @@ sub linksForExpectedAndActualResults($) push @links, { href => "$base-$expectedTag$expectedResultExtension", text => "expected" }; push @links, { href => "$base-$actualTag$expectedResultExtension", text => "actual" }; - push @links, { href => "$base-$diffsTag.txt", text => "diffs" }; + push @links, { href => "$base-$diffsTag.txt", text => "diff" }; + push @links, { href => "$base-$prettyDiffTag.html", text => "pretty diff" }; return \@links; } @@ -1661,12 +1768,13 @@ sub linksForNewTest my @links = (); my $base = stripExtension($test); + my $expectedResultPath = $expectedResultPaths{$base}; - my $expectedResultPathMinusExtension = stripExtension($expectedResultPath); + my ($expectedResultFileName, $expectedResultsDirectory, $expectedResultExtension) = fileparse($expectedResultPath, qr{\.[^.]+$}); - push @links, { href => toURL($expectedResultPath), text => "results" }; - if ($pixelTests && -f "$expectedResultPathMinusExtension.png") { - push @links, { href => toURL("$expectedResultPathMinusExtension.png"), text => "image" }; + push @links, { href => "$base-$actualTag$expectedResultExtension", text => "result" }; + if ($pixelTests && $imagesPresent{$base}) { + push @links, { href => "$base-$expectedTag.png", text => "image" }; } return \@links; @@ -1691,10 +1799,25 @@ sub recordActualResultsAndDiff($$) my ($expectedResultFileNameMinusExtension, $expectedResultDirectoryPath, $expectedResultExtension) = fileparse($expectedResultPath, qr{\.[^.]+$}); my $actualResultsPath = "$testResultsDirectory/$base-$actualTag$expectedResultExtension"; my $copiedExpectedResultsPath = "$testResultsDirectory/$base-$expectedTag$expectedResultExtension"; + + mkpath(dirname($actualResultsPath)); writeToFile("$actualResultsPath", $actualResults); - copy("$expectedResultPath", "$copiedExpectedResultsPath"); - system "diff -u \"$copiedExpectedResultsPath\" \"$actualResultsPath\" > \"$testResultsDirectory/$base-$diffsTag.txt\""; + if (-f $expectedResultPath) { + copy("$expectedResultPath", "$copiedExpectedResultsPath"); + } else { + open EMPTY, ">$copiedExpectedResultsPath"; + close EMPTY; + } + + my $diffOuputBasePath = "$testResultsDirectory/$base"; + my $diffOutputPath = "$diffOuputBasePath-$diffsTag.txt"; + system "diff -u \"$copiedExpectedResultsPath\" \"$actualResultsPath\" > \"$diffOutputPath\""; + + my $prettyDiffOutputPath = "$diffOuputBasePath-$prettyDiffTag.html"; + my $prettyPatchPath = "BugsSite/PrettyPatch/"; + my $prettifyPath = "$prettyPatchPath/prettify.rb"; + system "ruby -I \"$prettyPatchPath\" \"$prettifyPath\" \"$diffOutputPath\" > \"$prettyDiffOutputPath\""; } sub buildPlatformResultHierarchy() @@ -1809,7 +1932,7 @@ sub readFromDumpToolWithTimer(*;$) setFileHandleNonBlocking($fh, 1); - my $maximumSecondsWithoutOutput = 15; + my $maximumSecondsWithoutOutput = $timeoutSeconds; $maximumSecondsWithoutOutput *= 10 if $guardMalloc; my $microsecondsToWaitBeforeReadingAgain = 1000; diff --git a/WebKitTools/Scripts/run-webkit-unittests b/WebKitTools/Scripts/run-webkit-unittests new file mode 100755 index 0000000..83aaea9 --- /dev/null +++ b/WebKitTools/Scripts/run-webkit-unittests @@ -0,0 +1,39 @@ +#!/usr/bin/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. + +import unittest + +from modules.bugzilla_unittest import * +from modules.commiters_unittest import * +from modules.cpp_style_unittest import * +from modules.diff_parser_unittest import * +from modules.scm_unittest import * + +if __name__ == "__main__": + unittest.main() diff --git a/WebKitTools/Scripts/sort-Xcode-project-file b/WebKitTools/Scripts/sort-Xcode-project-file index 52a3df1..044186f 100755 --- a/WebKitTools/Scripts/sort-Xcode-project-file +++ b/WebKitTools/Scripts/sort-Xcode-project-file @@ -155,7 +155,7 @@ sub sortChildrenByFileName($$) if ((!$aSuffix && !$isFile{$aFileName} && $bSuffix) || ($aSuffix && !$bSuffix && !$isFile{$bFileName})) { return !$aSuffix ? -1 : 1; } - return $aFileName cmp $bFileName; + return lc($aFileName) cmp lc($bFileName); } sub sortFilesByFileName($$) @@ -163,5 +163,5 @@ 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 $aFileName cmp $bFileName; + return lc($aFileName) cmp lc($bFileName); } diff --git a/WebKitTools/Scripts/sunspider-compare-results b/WebKitTools/Scripts/sunspider-compare-results index ec0863a..d219896 100755 --- a/WebKitTools/Scripts/sunspider-compare-results +++ b/WebKitTools/Scripts/sunspider-compare-results @@ -39,15 +39,21 @@ my $configuration = configuration(); my $root; my $showHelp = 0; +my $ubench = 0; +my $v8 = 0; my $programName = basename($0); my $usage = <<EOF; Usage: $programName [options] FILE FILE --help Show this help message --root Path to root tools build + --ubench Compare microbenchmark results + --v8 Compare the V8 benchmark results EOF GetOptions('root=s' => sub { my ($argName, $value); setConfigurationProductDir(Cwd::abs_path($value)); }, + 'ubench' => \$ubench, + 'v8' => \$v8, 'help' => \$showHelp); if ($showHelp) { @@ -77,7 +83,7 @@ sub setupEnvironmentForExecution($) # FIXME: Other platforms may wish to augment this method to use LD_LIBRARY_PATH, etc. } -sub jscPath($) +sub pathToBuiltJSC($) { my ($productDir) = @_; my $jscName = "jsc"; @@ -85,17 +91,37 @@ sub jscPath($) return "$productDir/$jscName"; } -buildJSC(); +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 = productDir(); + # FIXME: This hack should be pushed down into productDir() + $productDir .= "/JavaScriptCore" if (isQt() or isGtk()); + + setupEnvironmentForExecution($productDir); + return pathToBuiltJSC($productDir); +} + +my $jscPath = pathToJSC(); chdirWebKit(); chdir("SunSpider"); -my $productDir = productDir(); -# FIXME: This hack should be pushed down into productDir() -$productDir .= "/JavaScriptCore" if (isQt() or isGtk()); - -setupEnvironmentForExecution($productDir); -my @args = ("--shell", jscPath($productDir)); +my @args = ("--shell", $jscPath); # This code could be removed if we chose to pass extra args to sunspider instead of Xcode +push @args, "--ubench" if $ubench; +push @args, "--v8" if $v8; exec "./sunspider-compare-results", @args, @ARGV; diff --git a/WebKitTools/Scripts/svn-apply b/WebKitTools/Scripts/svn-apply index 009bdd0..4b88a37 100755 --- a/WebKitTools/Scripts/svn-apply +++ b/WebKitTools/Scripts/svn-apply @@ -7,13 +7,13 @@ # are met: # # 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. +# notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of # its contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. +# from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED @@ -59,7 +59,6 @@ use strict; use warnings; -use Cwd; use Digest::MD5; use File::Basename; use File::Spec; @@ -67,6 +66,10 @@ use Getopt::Long; use MIME::Base64; use POSIX qw(strftime); +use FindBin; +use lib $FindBin::Bin; +use VCSUtils; + sub addDirectoriesIfNeeded($); sub applyPatch($$;$); sub checksum($); @@ -79,20 +82,41 @@ sub removeDirectoriesIfNeeded(); sub setChangeLogDateAndReviewer($$); sub svnStatus($); +# These should be replaced by an scm class/module: +sub scmKnowsOfFile($); +sub scmCopy($$); +sub scmAdd($); +sub scmRemove($); + + # Project time zone for Cupertino, CA, US my $changeLogTimeZone = "PST8PDT"; my $merge = 0; my $showHelp = 0; my $reviewer; -if (!GetOptions("merge!" => \$merge, "help!" => \$showHelp, "reviewer=s" => \$reviewer) || $showHelp) { - print STDERR basename($0) . " [-h|--help] [-m|--merge] [-r|--reviewer name] patch1 [patch2 ...]\n"; +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 $isGit = isGitDirectory("."); +my $isSVN = isSVNDirectory("."); +$isSVN || $isGit || die "Couldn't determine your version control system."; + my %removeDirectoryIgnoreList = ( '.' => 1, '..' => 1, + '.git' => 1, '.svn' => 1, '_svn' => 1, ); @@ -148,6 +172,8 @@ if ($patch && !$copiedFromPath) { } 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 %versions) { print "Getting version $versions{$file} of $file\n"; system "svn", "update", "-r", $versions{$file}, $file; @@ -157,7 +183,7 @@ if ($merge) { # Handle copied and moved files first since moved files may have their source deleted before the move. for my $file (keys %copiedFiles) { addDirectoriesIfNeeded(dirname($file)); - system "svn", "copy", $copiedFiles{$file}, $file; + scmCopy($copiedFiles{$file}, $file); } for $patch (@patches) { @@ -178,18 +204,21 @@ sub addDirectoriesIfNeeded($) next if exists $checkedDirectories{$dir}; if (! -e $dir) { mkdir $dir or die "Failed to create required directory '$dir' for path '$path'\n"; - system "svn", "add", $dir; + scmAdd($dir); $checkedDirectories{$dir} = 1; } elsif (-d $dir) { - my $svnOutput = svnStatus($dir); - if ($svnOutput && $svnOutput =~ m#\?\s+$dir\n#) { - system "svn", "add", $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' is not a directory"; + die "'$dir' exists, but is not a directory"; } } } @@ -202,6 +231,12 @@ sub applyPatch($$;$) open PATCH, "| $command" or die "Failed to patch $fullPath\n"; print PATCH $patch; close PATCH; + + my $exitCode = $? >> 8; + if ($exitCode != 0) { + print "patch -p0 \"$fullPath\" returned $exitCode. Pass --force to ignore patch failures.\n"; + exit($exitCode); + } } sub checksum($) @@ -219,7 +254,7 @@ sub fixChangeLogPatch($) my $patch = shift; my $contextLineCount = 3; - return $patch if $patch !~ /\n@@ -1,(\d+) \+1,(\d+) @@\n( .*\n)+(\+.*\n)+( .*\n){$contextLineCount}$/m; + return $patch if $patch !~ /\n@@ -1,(\d+) \+1,(\d+) @@\r?\n( .*\r?\n)+(\+.*\r?\n)+( .*\r?\n){$contextLineCount}$/m; my ($oldLineCount, $newLineCount) = ($1, $2); return $patch if $oldLineCount <= $contextLineCount; @@ -290,17 +325,13 @@ sub handleBinaryChange($$) open FILE, ">", $fullPath or die; print FILE decode_base64($1); close FILE; - my $svnOutput = svnStatus($fullPath); - if ($svnOutput && substr($svnOutput, 0, 1) eq "?") { + if (!scmKnowsOfFile($fullPath)) { # Addition - system "svn", "add", $fullPath; - } else { - # Modification - print $svnOutput if $svnOutput; + scmAdd($fullPath); } } else { # Deletion - system "svn", "rm", $fullPath; + scmRemove($fullPath); } } @@ -314,8 +345,7 @@ sub isDirectoryEmptyForRemoval($) if (! -d File::Spec->catdir($dir, $item)) { $directoryIsEmpty = 0; } else { - my $svnOutput = svnStatus(File::Spec->catdir($dir, $item)); - next if $svnOutput && substr($svnOutput, 0, 1) eq "D"; + next if (scmWillDeleteFile(File::Spec->catdir($dir, $item))); $directoryIsEmpty = 0; } } @@ -328,7 +358,7 @@ sub patch($) my ($patch) = @_; return if !$patch; - unless ($patch =~ m|^Index: ([^\n]+)|) { + unless ($patch =~ m|^Index: ([^\r\n]+)|) { my $separator = '-' x 67; warn "Failed to find 'Index:' in:\n$separator\n$patch\n$separator\n"; return; @@ -339,7 +369,7 @@ sub patch($) my $addition = 0; my $isBinary = 0; - $addition = 1 if ($patch =~ /\n--- .+\(revision 0\)\n/ || $patch =~ /\n@@ -0,0 .* @@/); + $addition = 1 if ($patch =~ /\n--- .+\(revision 0\)\r?\n/ || $patch =~ /\n@@ -0,0 .* @@/); $deletion = 1 if $patch =~ /\n@@ .* \+0,0 @@/; $isBinary = 1 if $patch =~ /\nCannot display: file marked as a binary type\./; @@ -363,14 +393,15 @@ sub patch($) } elsif ($deletion) { # Deletion applyPatch($patch, $fullPath, ["--force"]); - system "svn", "rm", "--force", $fullPath; + scmRemove($fullPath); } else { # Addition rename($fullPath, "$fullPath.orig") if -e $fullPath; applyPatch($patch, $fullPath); unlink("$fullPath.orig") if -e "$fullPath.orig" && checksum($fullPath) eq checksum("$fullPath.orig"); - system "svn", "add", $fullPath; - system "svn", "stat", "$fullPath.orig" if -e "$fullPath.orig"; + scmAdd($fullPath); + # What is this for? + system "svn", "stat", "$fullPath.orig" if $isSVN && -e "$fullPath.orig"; } } } @@ -379,14 +410,7 @@ sub removeDirectoriesIfNeeded() { foreach my $dir (reverse sort keys %checkedDirectories) { if (isDirectoryEmptyForRemoval($dir)) { - my $svnOutput; - open SVN, "svn rm '$dir' |" or die; - # Only save the last line since Subversion lists all changed statuses below $dir - while (<SVN>) { - $svnOutput = $_; - } - close SVN; - print $svnOutput if $svnOutput; + scmRemove($dir); } } } @@ -423,7 +447,8 @@ sub svnStatus($) # be first (since any files with unknown status will be listed first). my $normalizedFullPath = File::Spec->catdir(File::Spec->splitdir($fullPath)); while (<SVN>) { - chomp; + # Input may use a different EOL sequence than $/, so avoid chomp. + $_ =~ s/[\r\n]+$//g; my $normalizedStatPath = File::Spec->catdir(File::Spec->splitdir(substr($_, 7))); if ($normalizedFullPath eq $normalizedStatPath) { $svnStatus = $_; @@ -441,3 +466,75 @@ sub svnStatus($) close SVN; return $svnStatus; } + +# 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 $gitOutput = `git diff-index --name-status HEAD -- $path`; + return 1 if $gitOutput && substr($gitOutput, 0, 1) eq "D"; + } + return 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) { + `git ls-files --error-unmatch -- $path`; + my $exitCode = $? >> 8; + return $exitCode == 0; + } +} + +sub scmCopy($$) +{ + my ($source, $destination) = @_; + if ($isSVN) { + system "svn", "copy", $source, $destination; + } elsif ($isGit) { + system "cp", $source, $destination; + system "git", "add", $destination; + } +} + +sub scmAdd($) +{ + my ($path) = @_; + if ($isSVN) { + system "svn", "add", $path; + } elsif ($isGit) { + system "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; + open SVN, "svn rm --force '$path' |" or die "svn rm --force '$path' failed!"; + # Only print the last line. Subversion outputs all changed statuses below $dir + while (<SVN>) { + $svnOutput = $_; + } + close SVN; + print $svnOutput if $svnOutput; + } elsif ($isGit) { + system "git", "rm", "--force", $path; + } +} diff --git a/WebKitTools/Scripts/svn-create-patch b/WebKitTools/Scripts/svn-create-patch index 365737a..75c82bc 100755 --- a/WebKitTools/Scripts/svn-create-patch +++ b/WebKitTools/Scripts/svn-create-patch @@ -44,14 +44,16 @@ use strict; use warnings; use Config; -use Cwd; 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 canonicalizePath($); @@ -60,7 +62,7 @@ sub findMimeType($;$); sub findModificationType($); sub findSourceFileAndRevision($); sub fixChangeLogPatch($); -sub generateDiff($); +sub generateDiff($$); sub generateFileList($\%); sub isBinaryMimeType($); sub manufacturePatchForAdditionWithHistory($); @@ -75,6 +77,8 @@ sub testfilecmp($$); $ENV{'LC_ALL'} = 'C'; my $showHelp; +my $svnVersion = `svn --version --quiet`; +my $devNull = File::Spec->devnull(); my $result = GetOptions( "help" => \$showHelp, @@ -93,9 +97,12 @@ for my $path (keys %paths) { generateFileList($path, %diffFiles); } +my $svnRoot = determineSVNRoot(); +my $prefix = chdirReturningRelativePath($svnRoot); + # Generate the diffs, in a order chosen for easy reviewing. for my $path (sort patchpathcmp values %diffFiles) { - generateDiff($path); + generateDiff($path, $prefix); } exit 0; @@ -151,7 +158,6 @@ sub findBaseUrl($) while (<INFO>) { if (/^URL: (.+)/) { $baseUrl = $1; - last; } } close INFO; @@ -165,7 +171,10 @@ sub findMimeType($;$) open PROPGET, "svn propget svn:mime-type $args '$file' |" or die; my $mimeType = <PROPGET>; close PROPGET; - chomp $mimeType if $mimeType; + # svn may output a different EOL sequence than $/, so avoid chomp. + if ($mimeType) { + $mimeType =~ s/[\r\n]+$//g; + } return $mimeType; } @@ -174,7 +183,7 @@ sub findModificationType($) my ($stat) = @_; my $fileStat = substr($stat, 0, 1); my $propertyStat = substr($stat, 1, 1); - if ($fileStat eq "A") { + if ($fileStat eq "A" || $fileStat eq "R") { my $additionWithHistory = substr($stat, 3, 1); return $additionWithHistory eq "+" ? "additionWithHistory" : "addition"; } @@ -252,10 +261,10 @@ sub fixChangeLogPatch($) return $newPatch; } -sub generateDiff($) +sub generateDiff($$) { - my ($fileData) = @_; - my $file = $fileData->{path}; + my ($fileData, $prefix) = @_; + my $file = File::Spec->catdir($prefix, $fileData->{path}); my $patch; if ($fileData->{modificationType} eq "additionWithHistory") { manufacturePatchForAdditionWithHistory($fileData); @@ -279,9 +288,17 @@ sub generateFileList($\%) my %testDirectories = map { $_ => 1 } qw(LayoutTests); open STAT, "svn stat '$statPath' |" or die; while (my $line = <STAT>) { - chomp $line; - my $stat = substr($line, 0, 7); - my $path = substr($line, 7); + # svn may output a different EOL sequence than $/, so avoid chomp. + $line =~ s/[\r\n]+$//g; + my $stat; + my $path; + if (eval "v$svnVersion" ge v1.6) { + $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) { @@ -324,7 +341,7 @@ sub manufacturePatchForAdditionWithHistory($) my $mimeType = findMimeType($file, $sourceRevision); print "svn:mime-type = ${mimeType}\n\n"; } else { - print `svn cat ${sourceFile} | diff -u /dev/null - | tail -n +3`; + print `svn cat ${sourceFile} | diff -u $devNull - | tail -n +3`; } } @@ -440,3 +457,4 @@ sub testfilecmp($$) my ($fileDataA, $fileDataB) = @_; return $fileDataA->{isTestFile} <=> $fileDataB->{isTestFile}; } + diff --git a/WebKitTools/Scripts/svn-unapply b/WebKitTools/Scripts/svn-unapply index 35111ce..964b51e 100755 --- a/WebKitTools/Scripts/svn-unapply +++ b/WebKitTools/Scripts/svn-unapply @@ -94,7 +94,7 @@ while (<>) { $filter = \&gitdiff2svndiff; } $_ = &$filter($_) if $filter; - if (/^Index: (.*)/) { + if (/^Index: (.+)/) { $indexPath = $1; if ($patch) { if ($copiedFromPath) { @@ -220,7 +220,7 @@ sub patch($) my ($patch) = @_; return if !$patch; - unless ($patch =~ m|^Index: ([^\n]+)|) { + unless ($patch =~ m|^Index: ([^\r\n]+)|) { my $separator = '-' x 67; warn "Failed to find 'Index:' in:\n$separator\n$patch\n$separator\n"; return; @@ -330,7 +330,8 @@ sub svnStatus($) # be first (since any files with unknown status will be listed first). my $normalizedFullPath = File::Spec->catdir(File::Spec->splitdir($fullPath)); while (<SVN>) { - chomp; + # Input may use a different EOL sequence than $/, so avoid chomp. + $_ =~ s/[\r\n]+$//g; my $normalizedStatPath = File::Spec->catdir(File::Spec->splitdir(substr($_, 7))); if ($normalizedFullPath eq $normalizedStatPath) { $svnStatus = $_; diff --git a/WebKitTools/Scripts/update-webkit b/WebKitTools/Scripts/update-webkit index c236934..5f72869 100755 --- a/WebKitTools/Scripts/update-webkit +++ b/WebKitTools/Scripts/update-webkit @@ -37,6 +37,7 @@ use Getopt::Long; use webkitdirs; sub runSvnUpdate(); +sub normalizePath($); # Handle options my $quiet = ''; @@ -79,7 +80,11 @@ sub runSvnUpdate() my @conflictedChangeLogs; while (my $line = <UPDATE>) { print $line; - push @conflictedChangeLogs, $1 if $line =~ m/^C\s+(.+)\s*$/ && basename($1) eq "ChangeLog"; + $line =~ m/^C\s+(.*\S+)\s*$/; + if ($1) { + my $filename = normalizePath($1); + push @conflictedChangeLogs, $filename if basename($filename) eq "ChangeLog"; + } } close UPDATE or die; @@ -90,3 +95,10 @@ sub runSvnUpdate() or die "Could not open resolve-ChangeLogs script: $!.\n"; } } + +sub normalizePath($) +{ + my ($path) = @_; + $path =~ s/\\/\//g; + return $path; +} diff --git a/WebKitTools/Scripts/update-webkit-auxiliary-libs b/WebKitTools/Scripts/update-webkit-auxiliary-libs index 1d6943c..9c52449 100755 --- a/WebKitTools/Scripts/update-webkit-auxiliary-libs +++ b/WebKitTools/Scripts/update-webkit-auxiliary-libs @@ -33,7 +33,7 @@ use warnings; use HTTP::Date qw(str2time); use File::Find; -use File::Temp; +use File::Temp (); use File::Spec; use FindBin; use lib $FindBin::Bin; diff --git a/WebKitTools/Scripts/update-webkit-support-libs b/WebKitTools/Scripts/update-webkit-support-libs index c4555f3..7065293 100755 --- a/WebKitTools/Scripts/update-webkit-support-libs +++ b/WebKitTools/Scripts/update-webkit-support-libs @@ -32,7 +32,7 @@ use strict; use warnings; use File::Find; -use File::Temp; +use File::Temp (); use File::Spec; use FindBin; use lib $FindBin::Bin; diff --git a/WebKitTools/Scripts/webkit-tools-completion.sh b/WebKitTools/Scripts/webkit-tools-completion.sh new file mode 100644 index 0000000..308711d --- /dev/null +++ b/WebKitTools/Scripts/webkit-tools-completion.sh @@ -0,0 +1,91 @@ +# 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/WebKitTools/Scripts/webkit-tools-completion.sh + +__bugzilla-tool_generate_reply() +{ + COMPREPLY=( $(compgen -W "$1" -- "${COMP_WORDS[COMP_CWORD]}") ) +} + +_bugzilla-tool_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 + __bugzilla-tool_generate_reply "--help apply-patches bugs-to-commit commit-message land-diff land-patches obsolete-attachments patches-to-commit post-commits post-diff reviewed-patches" + return + fi + + case "$command" in + apply-patches) + __bugzilla-tool_generate_reply "--force-clean --local-commit --no-clean --no-update" + return + ;; + commit-message) + return + ;; + land-diff) + __bugzilla-tool_generate_reply "--no-build --no-close --no-test --reviewer= -r" + return + ;; + land-patches) + __bugzilla-tool_generate_reply "--force-clean --no-build --no-clean --no-test" + return + ;; + obsolete-attachments) + return + ;; + post-diff) + __bugzilla-tool_generate_reply "--description --no-obsolete --no-review -m" + return + ;; + post-commits) + __bugzilla-tool_generate_reply "--bug-id= --no-comment --no-obsolete --no-review -b" + return + ;; + esac +} + +complete -F _bugzilla-tool_complete bugzilla-tool +complete -W "--continue --fix-merged --help --no-continue --no-warnings --warnings -c -f -h -w" resolve-ChangeLogs +complete -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-launch-safari --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/WebKitTools/Scripts/webkitdirs.pm b/WebKitTools/Scripts/webkitdirs.pm index f9f05d3..d8ccd3a 100644 --- a/WebKitTools/Scripts/webkitdirs.pm +++ b/WebKitTools/Scripts/webkitdirs.pm @@ -55,6 +55,7 @@ my $sourceDir; my $currentSVNRevision; my $osXVersion; my $isQt; +my %qtFeatureDefaults; my $isGtk; my $isWx; my @wxArgs; @@ -92,7 +93,18 @@ sub determineBaseProductDir { return if defined $baseProductDir; determineSourceDir(); + if (isAppleMacWebKit()) { + # Silently remove ~/Library/Preferences/xcodebuild.plist which can + # cause build failure. The presence of + # ~/Library/Preferences/xcodebuild.plist can prevent xcodebuild from + # respecting global settings such as a custom build products directory + # (<rdar://problem/5585899>). + my $personalPlistFile = $ENV{HOME} . "/Library/Preferences/xcodebuild.plist"; + if (-e $personalPlistFile) { + unlink($personalPlistFile) || die "Could not delete $personalPlistFile: $!"; + } + open PRODUCT, "defaults read com.apple.Xcode PBXApplicationwideBuildSettings 2> /dev/null |" or die; $baseProductDir = join '', <PRODUCT>; close PRODUCT; @@ -109,38 +121,36 @@ sub determineBaseProductDir undef $baseProductDir unless $baseProductDir =~ /^\//; } } - } else { - $baseProductDir = $ENV{"WEBKITOUTPUTDIR"}; - if (isAppleWinWebKit() && $baseProductDir) { - my $unixBuildPath = `cygpath --unix \"$baseProductDir\"`; - chomp $unixBuildPath; - $baseProductDir = $unixBuildPath; - } } - if ($baseProductDir && isAppleMacWebKit()) { + if (!defined($baseProductDir)) { # Port-spesific checks failed, use default + $baseProductDir = $ENV{"WEBKITOUTPUTDIR"} || "$sourceDir/WebKitBuild"; + } + + if (isGit() && isGitBranchBuild()) { + my $branch = gitBranch(); + $baseProductDir = "$baseProductDir/$branch"; + } + + if (isAppleMacWebKit()) { $baseProductDir =~ s|^\Q$(SRCROOT)/..\E$|$sourceDir|; $baseProductDir =~ s|^\Q$(SRCROOT)/../|$sourceDir/|; $baseProductDir =~ s|^~/|$ENV{HOME}/|; die "Can't handle Xcode product directory with a ~ in it.\n" if $baseProductDir =~ /~/; die "Can't handle Xcode product directory with a variable in it.\n" if $baseProductDir =~ /\$/; - @baseProductDirOption = (); + @baseProductDirOption = ("SYMROOT=$baseProductDir", "OBJROOT=$baseProductDir"); } - if (!defined($baseProductDir)) { - $baseProductDir = "$sourceDir/WebKitBuild"; - - if (isGit() && isGitBranchBuild()) { - my $branch = gitBranch(); - $baseProductDir = "$baseProductDir/$branch"; - } + if (isCygwin()) { + my $dosBuildPath = `cygpath --windows \"$baseProductDir\"`; + chomp $dosBuildPath; + $ENV{"WEBKITOUTPUTDIR"} = $dosBuildPath; + } - @baseProductDirOption = ("SYMROOT=$baseProductDir", "OBJROOT=$baseProductDir") if (isAppleMacWebKit()); - if (isCygwin()) { - my $dosBuildPath = `cygpath --windows \"$baseProductDir\"`; - chomp $dosBuildPath; - $ENV{"WEBKITOUTPUTDIR"} = $dosBuildPath; - } + if (isAppleWinWebKit()) { + my $unixBuildPath = `cygpath --unix \"$baseProductDir\"`; + chomp $unixBuildPath; + $baseProductDir = $unixBuildPath; } } @@ -228,7 +238,15 @@ sub determineConfigurationProductDir if (isAppleWinWebKit() && !isWx()) { $configurationProductDir = "$baseProductDir/bin"; } else { - $configurationProductDir = "$baseProductDir/$configuration"; + # [Gtk] We don't have Release/Debug configurations in straight + # autotool builds (non build-webkit). In this case and if + # WEBKITOUTPUTDIR exist, use that as our configuration dir. This will + # allows us to run run-webkit-tests without using build-webkit. + if ($ENV{"WEBKITOUTPUTDIR"} && isGtk()) { + $configurationProductDir = "$baseProductDir"; + } else { + $configurationProductDir = "$baseProductDir/$configuration"; + } } } @@ -312,7 +330,7 @@ sub XcodeCoverageSupportOptions() push @coverageSupportOptions, "GCC_GENERATE_TEST_COVERAGE_FILES=YES"; push @coverageSupportOptions, "GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES"; push @coverageSupportOptions, "EXTRA_LINK= \$(EXTRA_LINK) -ftest-coverage -fprofile-arcs"; - push @coverageSupportOptions, "OTHER_CFLAGS= \$(OTHER_CFLAGS) -MD"; + push @coverageSupportOptions, "OTHER_CFLAGS= \$(OTHER_CFLAGS) -DCOVERAGE -MD"; push @coverageSupportOptions, "OTHER_LDFLAGS=\$(OTHER_LDFLAGS) -ftest-coverage -fprofile-arcs -framework AppKit"; return @coverageSupportOptions; } @@ -468,6 +486,9 @@ sub builtDylibPathForName if (isQt() or isChromium()) { return "$configurationProductDir/$libraryName"; } + if (isWx()) { + return "$configurationProductDir/libwxwebkit.dylib"; + } if (isGtk()) { return "$configurationProductDir/$libraryName/../.libs/libwebkit-1.0.so"; } @@ -497,25 +518,40 @@ sub checkFrameworks } } -sub hasSVGSupport +sub libraryContainsSymbol { - return 0 if isCygwin(); - my $path = shift; + my $symbol = shift; - if (isQt()) { - return 1; + if (isCygwin()) { + # FIXME: Implement this for Windows. + return 0; } - my $hasSVGSupport = 0; + my $foundSymbol = 0; if (-e $path) { open NM, "-|", "nm", $path or die; while (<NM>) { - $hasSVGSupport = 1 if /SVGElement/; + $foundSymbol = 1 if /$symbol/; } close NM; } - return $hasSVGSupport; + return $foundSymbol; +} + +sub hasSVGSupport +{ + my $path = shift; + + if (isQt()) { + return 1; + } + + if (isWx()) { + return 0; + } + + return libraryContainsSymbol($path, "SVGElement"); } sub removeLibraryDependingOnSVG @@ -547,16 +583,7 @@ sub hasAcceleratedCompositingSupport return 0 if isCygwin() || isQt(); my $path = shift; - - my $useAcceleratedCompositing = 0; - if (-e $path) { - open NM, "-|", "nm", $path or die; - while (<NM>) { - $useAcceleratedCompositing = 1 if /GraphicsLayer/; - } - close NM; - } - return $useAcceleratedCompositing; + return libraryContainsSymbol($path, "GraphicsLayer"); } sub checkWebCoreAcceleratedCompositingSupport @@ -573,19 +600,10 @@ sub checkWebCoreAcceleratedCompositingSupport sub has3DRenderingSupport { - return 0 if isCygwin() || isQt(); + return 0 if isQt(); my $path = shift; - - my $has3DRenderingSupport = 0; - if (-e $path) { - open NM, "-|", "nm", $path or die; - while (<NM>) { - $has3DRenderingSupport = 1 if /WebCoreHas3DRendering/; - } - close NM; - } - return $has3DRenderingSupport; + return libraryContainsSymbol($path, "WebCoreHas3DRendering"); } sub checkWebCore3DRenderingSupport @@ -602,24 +620,8 @@ sub checkWebCore3DRenderingSupport sub hasWMLSupport { - return 0 if isCygwin(); - my $path = shift; - - if (isQt()) { - # FIXME: Check built library for WML support, just like Gtk does it below. - return 0; - } - - my $hasWMLSupport = 0; - if (-e $path) { - open NM, "-|", "nm", $path or die; - while (<NM>) { - $hasWMLSupport = 1 if /WMLElement/; - } - close NM; - } - return $hasWMLSupport; + return libraryContainsSymbol($path, "WMLElement"); } sub removeLibraryDependingOnWML @@ -646,12 +648,68 @@ sub checkWebCoreWMLSupport return $hasWML; } +sub hasXHTMLMPSupport +{ + my $path = shift; + return libraryContainsSymbol($path, "isXHTMLMPDocument"); +} + +sub checkWebCoreXHTMLMPSupport +{ + my $required = shift; + my $framework = "WebCore"; + my $path = builtDylibPathForName($framework); + my $hasXHTMLMP = hasXHTMLMPSupport($path); + if ($required && !$hasXHTMLMP) { + die "$framework at \"$path\" does not include XHTML MP Support\n"; + } + return $hasXHTMLMP; +} + +sub hasWCSSSupport +{ + # FIXME: When WCSS support is landed this should be updated to check for WCSS + # being enabled in a manner similar to how we check for XHTML MP above. + return 0; +} + +sub checkWebCoreWCSSSupport +{ + my $required = shift; + my $framework = "WebCore"; + my $path = builtDylibPathForName($framework); + my $hasWCSS = hasWCSSSupport($path); + if ($required && !$hasWCSS) { + die "$framework at \"$path\" does not include WCSS Support\n"; + } + return $hasWCSS; +} + sub isQt() { determineIsQt(); return $isQt; } +sub qtFeatureDefaults() +{ + determineQtFeatureDefaults(); + return %qtFeatureDefaults; +} + +sub determineQtFeatureDefaults() +{ + return if %qtFeatureDefaults; + my $originalCwd = getcwd(); + chdir File::Spec->catfile(sourceDir(), "WebCore"); + my $defaults = `qmake CONFIG+=compute_defaults 2>&1`; + chdir $originalCwd; + + while ($defaults =~ m/(\S*?)=(.*?)( |$)/gi) { + $qtFeatureDefaults{$1}=$2; + } +} + sub checkForArgumentAndRemoveFromARGV { my $argToCheck = shift; @@ -897,8 +955,11 @@ sub setupCygwinEnv() my $programFilesPath = `cygpath "$ENV{'PROGRAMFILES'}"`; chomp $programFilesPath; $vcBuildPath = "$programFilesPath/Microsoft Visual Studio 8/Common7/IDE/devenv.com"; - if (! -e $vcBuildPath) { - # VC++ not found, try VC++ Express + if (-e $vcBuildPath) { + # Visual Studio is installed; we can use pdevenv to build. + $vcBuildPath = File::Spec->catfile(sourceDir(), qw(WebKitTools Scripts pdevenv)); + } else { + # Visual Studio not found, try VC++ Express my $vsInstallDir; if ($ENV{'VSINSTALLDIR'}) { $vsInstallDir = $ENV{'VSINSTALLDIR'}; @@ -960,31 +1021,15 @@ sub buildVisualStudioProject chomp(my $winProjectPath = `cygpath -w "$project"`); - my $command = "/build"; + my $action = "/build"; if ($clean) { - $command = "/clean"; + $action = "/clean"; } - print "$vcBuildPath $winProjectPath /build $config\n"; - return system $vcBuildPath, $winProjectPath, $command, $config; -} - -sub buildSconsProject -{ - my ($project, $shouldClean) = @_; - print "Building from $project/$project.scons\n"; + my @command = ($vcBuildPath, $winProjectPath, $action, $config); - my $sconsCommand = "scons"; - if (isCygwin()) { - # HACK: Launch scons with Win32 python instead of CYGWIN python - # Scons + MSVC only works under Win32 python - # http://scons.tigris.org/issues/show_bug.cgi?id=2266 - $sconsCommand = "cmd /c 'C:\\Python26\\Scripts\\scons'"; - } - if ($shouldClean) { - return system $sconsCommand, "--clean"; - } - return system $sconsCommand; + print join(" ", @command), "\n"; + return system @command; } sub retrieveQMakespecVar @@ -1002,7 +1047,8 @@ sub retrieveQMakespecVar # open the included mkspec my $oldcwd = getcwd(); (my $volume, my $directories, my $file) = File::Spec->splitpath($mkspec); - chdir "$volume$directories"; + my $newcwd = "$volume$directories"; + chdir $newcwd if $newcwd; $compiler = retrieveQMakespecVar($1, $varname); chdir $oldcwd; } elsif ($_ =~ /$varname\s*=\s*([^\s]+)/) { @@ -1041,13 +1087,24 @@ sub autotoolsFlag($$) sub buildAutotoolsProject($@) { - my ($clean, @buildArgs) = @_; + my ($clean, @buildParams) = @_; my $make = 'make'; my $dir = productDir(); my $config = passedConfiguration() || configuration(); my $prefix = $ENV{"WebKitInstallationPrefix"}; + my @buildArgs = (); + my $makeArgs = $ENV{"WebKitMakeArguments"} || ""; + for my $i (0 .. $#buildParams) { + my $opt = $buildParams[$i]; + if ($opt =~ /^--makeargs=(.*)/i ) { + $makeArgs = $makeArgs . " " . $1; + } else { + push @buildArgs, $opt; + } + } + push @buildArgs, "--prefix=" . $prefix if defined($prefix); # check if configuration is Debug @@ -1090,8 +1147,6 @@ sub buildAutotoolsProject($@) die "Failed to setup build environment using 'autotools'!\n"; } - my $makeArgs = $ENV{"WebKitMakeArguments"} || ""; - $result = system "$make $makeArgs"; if ($result ne 0) { die "\nFailed to build WebKit using '$make'!\n"; @@ -1107,8 +1162,6 @@ sub buildQMakeProject($@) my @buildArgs = ("-r"); - push @buildArgs, "DEFINES+=QT_SHARED"; - my $qmakebin = "qmake"; # Allow override of the qmake binary from $PATH my $makeargs = ""; for my $i (0 .. $#buildParams) { @@ -1135,7 +1188,13 @@ sub buildQMakeProject($@) push @buildArgs, "CONFIG+=debug"; } else { push @buildArgs, "CONFIG+=release"; - push @buildArgs, "CONFIG-=debug"; + my $passedConfig = passedConfiguration() || ""; + if (!isDarwin() || $passedConfig =~ m/release/i) { + push @buildArgs, "CONFIG-=debug"; + } else { + push @buildArgs, "CONFIG+=debug_and_release"; + push @buildArgs, "CONFIG+=build_all"; + } } my $dir = baseProductDir(); @@ -1177,8 +1236,6 @@ sub buildQMakeQtProject($$@) { my ($project, $clean, @buildArgs) = @_; - push @buildArgs, "CONFIG+=qt-port"; - return buildQMakeProject($clean, @buildArgs); } @@ -1222,7 +1279,7 @@ sub runSafari 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"; - if (architecture()) { + if (!isTiger() && architecture()) { return system "arch", "-" . architecture(), safariPath(), @ARGV; } else { return system safariPath(), @ARGV; diff --git a/WebKitTools/WebKitLauncher/Configurations/Base.xcconfig b/WebKitTools/WebKitLauncher/Configurations/Base.xcconfig new file mode 100644 index 0000000..0a4dc2e --- /dev/null +++ b/WebKitTools/WebKitLauncher/Configurations/Base.xcconfig @@ -0,0 +1,39 @@ +// 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 = $(ARCHS_STANDARD_32_64_BIT); +DEAD_CODE_STRIPPING = YES; +DEBUG_INFORMATION_FORMAT = dwarf; +GCC_DEBUGGING_SYMBOLS = full; +GCC_MODEL_TUNING = G5; +GCC_PREPROCESSOR_DEFINITIONS = ENABLE_SPARKLE=$(ENABLE_SPARKLE); +GCC_TREAT_WARNINGS_AS_ERRORS = YES; +GCC_VERSION = 4.0; +GCC_VERSION[arch=x86_64] = 4.2; +MACOSX_DEPLOYMENT_TARGET = 10.4; +MACOSX_DEPLOYMENT_TARGET[arch=x86_64] = 10.5; +PREBINDING = NO; +SDKROOT = macosx10.5; +WARNING_CFLAGS = -Wall; + +ENABLE_SPARKLE = 0; diff --git a/WebKitTools/WebKitLauncher/Configurations/WebKitLauncher.xcconfig b/WebKitTools/WebKitLauncher/Configurations/WebKitLauncher.xcconfig new file mode 100644 index 0000000..c4dde36 --- /dev/null +++ b/WebKitTools/WebKitLauncher/Configurations/WebKitLauncher.xcconfig @@ -0,0 +1,27 @@ +// 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; +MACOSX_DEPLOYMENT_TARGET[arch=ppc] = 10.2; diff --git a/WebKitTools/WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig b/WebKitTools/WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig new file mode 100644 index 0000000..ff352e6 --- /dev/null +++ b/WebKitTools/WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig @@ -0,0 +1,29 @@ +// 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/WebKitTools/WebKitLauncher/Info.plist b/WebKitTools/WebKitLauncher/Info.plist index f7038bd..1eba038 100644 --- a/WebKitTools/WebKitLauncher/Info.plist +++ b/WebKitTools/WebKitLauncher/Info.plist @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<!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> @@ -424,9 +424,25 @@ <string>VERSION</string> <key>CFBundleShortVersionString</key> <string>rVERSION</string> + <key>LSArchitecturePriority</key> + <array> + <string>x86_64</string> + <string>i386</string> + <string>ppc</string> + </array> + <key>LSMinimumSystemVersionByArchitecture</key> + <dict> + <key>x86_64</key> + <string>10.6</string> + </dict> + <key>SUFeedURL</key> + <string>http://nightly.webkit.org/builds/trunk/mac/rss</string> + <key>SUShowReleaseNotes</key> + <false/> + <key>SUAllowsAutomaticUpdates</key> + <false/> <key>NSPrincipalClass</key> <string>BrowserApplication</string> - <key>CFBundleHelpBookFolder</key> <string>SafariHelp</string> <key>CFBundleHelpBookName</key> @@ -471,6 +487,5 @@ </dict> </dict> </array> - </dict> </plist> diff --git a/WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj b/WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj index 2ceb067..b8d7a6d 100644 --- a/WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj +++ b/WebKitTools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj @@ -3,15 +3,34 @@ archiveVersion = 1; classes = { }; - objectVersion = 42; + 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 */; }; 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 */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; @@ -25,20 +44,39 @@ 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>"; }; - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; - 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; }; - 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; }; + 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>"; }; 5D41141B0A50A9DE00C84CF0 /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = "<group>"; }; 5D4DF981097F89FB0083D5E5 /* start.html */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.html; path = start.html; sourceTree = "<group>"; }; 5D650F3409DB8B280075E9A8 /* WebKitNightlyEnabler.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = WebKitNightlyEnabler.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; - 5D650F3509DB8B370075E9A8 /* WebKitNightlyEnabler.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WebKitNightlyEnabler.m; sourceTree = "<group>"; }; - 5D650F7509DB8CB40075E9A8 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; }; + 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>"; }; + 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 */ @@ -63,13 +101,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - ); - name = Classes; - sourceTree = "<group>"; - }; 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( @@ -78,20 +109,10 @@ name = "Linked Frameworks"; sourceTree = "<group>"; }; - 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { - isa = PBXGroup; - children = ( - 29B97324FDCFA39411CA2CEA /* AppKit.framework */, - 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, - 5D650F7509DB8CB40075E9A8 /* CoreFoundation.framework */, - 29B97325FDCFA39411CA2CEA /* Foundation.framework */, - ); - name = "Other Frameworks"; - sourceTree = "<group>"; - }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( + 5DE79BEB0F1C63CC0067BE08 /* Sparkle.framework */, 8D1107320486CEB800E47090 /* WebKit.app */, 5D650F3409DB8B280075E9A8 /* WebKitNightlyEnabler.dylib */, ); @@ -101,8 +122,8 @@ 29B97314FDCFA39411CA2CEA /* WebKit */ = { isa = PBXGroup; children = ( - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97315FDCFA39411CA2CEA /* Source */, + 5DA88F7D0FC8174E00AB2F62 /* Configurations */, 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, @@ -110,13 +131,18 @@ name = WebKit; sourceTree = "<group>"; }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + 29B97315FDCFA39411CA2CEA /* Source */ = { isa = PBXGroup; children = ( - 5D650F3509DB8B370075E9A8 /* WebKitNightlyEnabler.m */, 29B97316FDCFA39411CA2CEA /* main.m */, + 5D1067620FE63758002A2868 /* WebKitLauncherURLProtocol.h */, + 5D1067630FE63758002A2868 /* WebKitLauncherURLProtocol.m */, + 5DA88F790FC813EB00AB2F62 /* WebKitNightlyEnabler.h */, + 5D650F3509DB8B370075E9A8 /* WebKitNightlyEnabler.m */, + 5DA88F6B0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.h */, + 5DA88F6C0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.m */, ); - name = "Other Sources"; + name = Source; sourceTree = "<group>"; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { @@ -134,11 +160,20 @@ isa = PBXGroup; children = ( 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, - 1058C7A2FEA54F0111CA2CBB /* Other 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 */ @@ -146,6 +181,9 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + 5D1067640FE63758002A2868 /* WebKitLauncherURLProtocol.h in Headers */, + 5DA88F7A0FC813EB00AB2F62 /* WebKitNightlyEnabler.h in Headers */, + 5DA88F6D0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -163,6 +201,7 @@ buildRules = ( ); dependencies = ( + 5DE79BCC0F1C62890067BE08 /* PBXTargetDependency */, ); name = WebKitNightlyEnabler; productName = WebKitNightlyEnabler; @@ -176,11 +215,13 @@ 8D1107290486CEB800E47090 /* Resources */, 8D11072C0486CEB800E47090 /* Sources */, 8D11072E0486CEB800E47090 /* Frameworks */, + 5DA892AC0FC8E3A100AB2F62 /* Copy Sparkle in to Frameworks */, ); buildRules = ( ); dependencies = ( 5D650F4509DB8B830075E9A8 /* PBXTargetDependency */, + 5DE79BCA0F1C62850067BE08 /* PBXTargetDependency */, ); name = WebKit; productInstallPath = "$(HOME)/Applications"; @@ -194,7 +235,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "WebKitLauncher" */; - compatibilityVersion = "Xcode 2.4"; + compatibilityVersion = "Xcode 3.1"; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* WebKit */; projectDirPath = ""; @@ -202,6 +243,7 @@ targets = ( 8D1107260486CEB800E47090 /* WebKit */, 5D650F3309DB8B280075E9A8 /* WebKitNightlyEnabler */, + 5DE79BC30F1C62450067BE08 /* Extract Sparkle */, ); }; /* End PBXProject section */ @@ -211,21 +253,55 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5D41141C0A50A9DE00C84CF0 /* VERSION in Resources */, - 5D650F3A09DB8B410075E9A8 /* WebKitNightlyEnabler.dylib 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; }; @@ -245,80 +321,74 @@ 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 = { - MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; - PRODUCT_NAME = WebKitNightlyEnabler; - SDKROOT_ppc = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Debug; }; 5D650F3909DB8B370075E9A8 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5DA88F800FC8176100AB2F62 /* WebKitNightlyEnabler.xcconfig */; buildSettings = { - MACOSX_DEPLOYMENT_TARGET_ppc = 10.4; - PRODUCT_NAME = WebKitNightlyEnabler; - SDKROOT_ppc = /Developer/SDKs/MacOSX10.4u.sdk; + }; + 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 = { - COPY_PHASE_STRIP = NO; - GCC_DEBUGGING_SYMBOLS = full; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - INFOPLIST_FILE = Info.plist; - INSTALL_PATH = "$(HOME)/Applications"; - PRODUCT_NAME = WebKit; - WRAPPER_EXTENSION = app; }; name = Debug; }; C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5DA88F7F0FC8176100AB2F62 /* WebKitLauncher.xcconfig */; buildSettings = { - DEAD_CODE_STRIPPING = YES; - DEPLOYMENT_POSTPROCESSING = YES; - GCC_DEBUGGING_SYMBOLS = full; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - INFOPLIST_FILE = Info.plist; - PRODUCT_NAME = WebKit; - WRAPPER_EXTENSION = app; }; name = Release; }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5DA88F7E0FC8176100AB2F62 /* Base.xcconfig */; buildSettings = { - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.2; - MACOSX_DEPLOYMENT_TARGET_i386 = 10.4; - MACOSX_DEPLOYMENT_TARGET_ppc = 10.2; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + GCC_OPTIMIZATION_LEVEL = 0; + ONLY_ACTIVE_ARCH = YES; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 5DA88F7E0FC8176100AB2F62 /* Base.xcconfig */; buildSettings = { - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET_i386 = 10.4; - MACOSX_DEPLOYMENT_TARGET_ppc = 10.2; - PREBINDING = NO; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Release; }; @@ -334,6 +404,15 @@ 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 = ( diff --git a/WebKitTools/WebKitLauncher/WebKitLauncherURLProtocol.h b/WebKitTools/WebKitLauncher/WebKitLauncherURLProtocol.h new file mode 100644 index 0000000..9159f5d --- /dev/null +++ b/WebKitTools/WebKitLauncher/WebKitLauncherURLProtocol.h @@ -0,0 +1,33 @@ +/* + * 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/WebKitTools/WebKitLauncher/WebKitLauncherURLProtocol.m b/WebKitTools/WebKitLauncher/WebKitLauncherURLProtocol.m new file mode 100644 index 0000000..9e56857 --- /dev/null +++ b/WebKitTools/WebKitLauncher/WebKitLauncherURLProtocol.m @@ -0,0 +1,123 @@ +/* + * 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 WebKitLauncherURLProtocol (ImplementationDetails) +-(void)handleIsWebKitLauncherAvailableJS; +-(void)handleCheckForUpdates; +-(void)resourceNotFound; +@end + +@implementation WebKitLauncherURLProtocol + ++(void)load +{ + [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; + + 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 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]; +} + +#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:NSErrorFailingURLStringKey forKey:[[self request] URL]]; + NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorFileDoesNotExist userInfo:infoDictionary]; + [client URLProtocol:self didFailWithError:error]; +} + +@end diff --git a/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.h b/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.h new file mode 100644 index 0000000..2fe1444 --- /dev/null +++ b/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.h @@ -0,0 +1,31 @@ +/* + * 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/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m b/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m index 8c6eb84..eef0f8c 100644 --- a/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m +++ b/WebKitTools/WebKitLauncher/WebKitNightlyEnabler.m @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * 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 @@ -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. * @@ -28,6 +28,7 @@ */ #import <Cocoa/Cocoa.h> +#import "WebKitNightlyEnablerSparkle.h" static void enableWebKitNightlyBehaviour() __attribute__ ((constructor)); @@ -40,15 +41,22 @@ typedef enum { RunStateRunning } WKNERunStates; +static char *webKitAppPath; static bool extensionBundlesWereLoaded = NO; static NSSet *extensionPaths = nil; -static void myBundleDidLoad(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) +static int32_t systemVersion() { - // Break out early if we have already detected an extension - if (extensionBundlesWereLoaded) - return; + 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]; @@ -62,11 +70,12 @@ static void myBundleDidLoad(CFNotificationCenterRef center, void *observer, CFSt // 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]) { + while ((path = [e nextObject])) { if ([bundlePath length] < [path length]) continue; if ([[bundlePath substringToIndex:[path length]] isEqualToString:path]) { + NSLog(@"Extension detected: %@", bundlePath); extensionBundlesWereLoaded = YES; break; } @@ -88,6 +97,8 @@ static void myApplicationWillFinishLaunching(CFNotificationCenterRef center, voi 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) @@ -97,30 +108,84 @@ static void myApplicationWillTerminate(CFNotificationCenterRef center, void *obs [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() { - char *webKitAppPath = getenv("WebKitAppPath"); - if (!webKitAppPath || !_CFGetProcessPath) + webKitAppPath = strdup(getenv("WebKitAppPath")); + if (!webKitAppPath) return; + unsetenv("WebKitAppPath"); + // Set up the main bundle early so it points at Safari.app CFBundleGetMainBundle(); - // Fiddle with CoreFoundation to have it pick up the executable path as being within WebKit.app - char **processPath = _CFGetProcessPath(); - *processPath = NULL; - setenv("CFProcessPath", webKitAppPath, 1); - _CFGetProcessPath(); + 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]; + } +} - // Clean up - unsetenv("CFProcessPath"); - unsetenv("WebKitAppPath"); +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(); @@ -129,10 +194,13 @@ static void enableWebKitNightlyBehaviour() @"~/Library/Application Enhancers/", @"/Library/Application Enhancers/", nil]; - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + // 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, nil]; + [NSNumber numberWithBool:YES], WKNEShouldMonitorShutdowns, + disabledInputManagers, @"NSDisabledInputManagers", nil]; [userDefaults registerDefaults:defaultPrefs]; if ([userDefaults boolForKey:WKNEShouldMonitorShutdowns]) { WKNERunStates savedState = (WKNERunStates)[userDefaults integerForKey:WKNERunState]; @@ -161,5 +229,8 @@ static void enableWebKitNightlyBehaviour() CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(), &myApplicationWillTerminate, myApplicationWillTerminate, (CFStringRef) NSApplicationWillTerminateNotification, NULL, CFNotificationSuspensionBehaviorDeliverImmediately); + + NSLog(@"WebKit %@ initialized.", [webKitLauncherBundle() objectForInfoDictionaryKey:@"CFBundleShortVersionString"]); + [pool release]; } diff --git a/WebKitTools/WebKitLauncher/WebKitNightlyEnablerSparkle.h b/WebKitTools/WebKitLauncher/WebKitNightlyEnablerSparkle.h new file mode 100644 index 0000000..7ff4fef --- /dev/null +++ b/WebKitTools/WebKitLauncher/WebKitNightlyEnablerSparkle.h @@ -0,0 +1,30 @@ +/* + * 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/WebKitTools/WebKitLauncher/WebKitNightlyEnablerSparkle.m b/WebKitTools/WebKitLauncher/WebKitNightlyEnablerSparkle.m new file mode 100644 index 0000000..3927131 --- /dev/null +++ b/WebKitTools/WebKitLauncher/WebKitNightlyEnablerSparkle.m @@ -0,0 +1,166 @@ +/* + * 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."; +} + +// -[SUBasicUpdateDriver downloadDidFinish:] requires that the download be served over SSL or signed +// using a public key. We're not interested in dealing with that hassle just at the moment. +static void skipSignatureVerificationInDownloadDidFinish(id self, SEL _cmd, id download) +{ + objc_msgSend(self, @selector(extractUpdate)); +} + +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 + +#if __LP64__ + +#define setMethodImplementation method_setImplementation + +#else + +static void setMethodImplementation(Method m, IMP imp) +{ + m->method_imp = imp; +} + +#endif + +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)); + setMethodImplementation(methodToPatch, (IMP)updatePermissionPromptDescription); + + methodToPatch = class_getInstanceMethod(objc_getRequiredClass("SUBasicUpdateDriver"), @selector(downloadDidFinish:)); + setMethodImplementation(methodToPatch, (IMP)skipSignatureVerificationInDownloadDidFinish); + + methodToPatch = class_getInstanceMethod(objc_getRequiredClass("SUUpdateAlert"), @selector(initWithAppcastItem:host:)); + setMethodImplementation(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/WebKitTools/WebKitLauncher/main.m b/WebKitTools/WebKitLauncher/main.m index 7d13994..20f130e 100644 --- a/WebKitTools/WebKitLauncher/main.m +++ b/WebKitTools/WebKitLauncher/main.m @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. + * 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 @@ -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,54 +29,61 @@ #import <Cocoa/Cocoa.h> #import <CoreFoundation/CoreFoundation.h> -void displayErrorAndQuit(NSString *title, NSString *message) +// 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); } -void checkMacOSXVersion() -{ - long versionNumber = 0; - OSErr error = Gestalt(gestaltSystemVersion, &versionNumber); - if (error != noErr || versionNumber < 0x1040) - displayErrorAndQuit(@"Mac OS X 10.4 is Required", @"Nightly builds of WebKit require Mac OS X 10.4 or newer."); -} - -int getLastVersionShown() +static int getLastVersionShown() { [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObject:@"-1" forKey:@"StartPageShownInVersion"]]; return [[NSUserDefaults standardUserDefaults] integerForKey:@"StartPageShownInVersion"]; } -void saveLastVersionShown(int lastVersion) +static void saveLastVersionShown(int lastVersion) { [[NSUserDefaults standardUserDefaults] setInteger:lastVersion forKey:@"StartPageShownInVersion"]; [[NSUserDefaults standardUserDefaults] synchronize]; } -NSString *getPathForStartPage() +static NSString *getPathForStartPage() { return [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"start.html"]; } -int getShowStartPageVersion() +static int getCurrentVersion() { - return getCurrentVersion() + 1; + return [[[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString *)kCFBundleVersionKey] intValue]; } -int getCurrentVersion() +static int getShowStartPageVersion() { - return [[[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString *)kCFBundleVersionKey] intValue]; + return getCurrentVersion() + 1; } -BOOL startPageDisabled() +static BOOL startPageDisabled() { return [[NSUserDefaults standardUserDefaults] boolForKey:@"StartPageDisabled"]; } -void addStartPageToArgumentsIfNeeded(NSMutableArray *arguments) +static void addStartPageToArgumentsIfNeeded(NSMutableArray *arguments) { if (startPageDisabled()) return; @@ -89,31 +96,51 @@ void addStartPageToArgumentsIfNeeded(NSMutableArray *arguments) } } +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]) + while ((s = [e nextObject])) argv[i++] = (char *) [s UTF8String]; - + e = [environment keyEnumerator]; i = 0; - while (s = [e nextObject]) + while ((s = [e nextObject])) env[i++] = (char *) [[NSString stringWithFormat:@"%@=%@", s, [environment objectForKey:s]] UTF8String]; - - execve([executable fileSystemRepresentation], argv, env); + + 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); } -NSBundle *locateSafariBundle() +static NSBundle *locateSafariBundle() { NSArray *applicationDirectories = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSAllDomainsMask, YES); NSEnumerator *e = [applicationDirectories objectEnumerator]; NSString *applicationDirectory; - while (applicationDirectory = [e nextObject]) { + while ((applicationDirectory = [e nextObject])) { NSString *possibleSafariPath = [applicationDirectory stringByAppendingPathComponent:@"Safari.app"]; NSBundle *possibleSafariBundle = [NSBundle bundleWithPath:possibleSafariPath]; if ([[possibleSafariBundle bundleIdentifier] isEqualToString:@"com.apple.Safari"]) @@ -130,24 +157,59 @@ NSBundle *locateSafariBundle() return safariBundle; } +static NSString *currentMacOSXVersion() +{ + SInt32 version; + if (Gestalt(gestaltSystemVersion, &version) != noErr) + return @"10.4"; + + return [NSString stringWithFormat:@"%x.%x", (version & 0xFF00) >> 8, (version & 0x00F0) >> 4]; +} + +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]; - checkMacOSXVersion(); + + NSString *systemVersion = currentMacOSXVersion(); + NSString *frameworkPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:systemVersion]; + NSString *pathToEnablerLib = [[NSBundle mainBundle] pathForResource:@"WebKitNightlyEnabler" ofType:@"dylib"]; NSBundle *safariBundle = locateSafariBundle(); NSString *executablePath = [safariBundle executablePath]; - NSString *frameworkPath = [[NSBundle mainBundle] resourcePath]; - NSString *pathToEnablerLib = [[NSBundle mainBundle] pathForResource:@"WebKitNightlyEnabler" ofType:@"dylib"]; + + if (!checkFrameworkPath(frameworkPath)) + displayErrorAndQuit([NSString stringWithFormat:@"Mac OS X %@ is not supported", systemVersion], + [NSString stringWithFormat:@"Nightly builds of WebKit are not supported on Mac OS X %@ at this time.", systemVersion]); + + 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 arrayWithObjects:executablePath, @"-WebKitDeveloperExtras", @"YES", @"-WebKitScriptDebuggerEnabled", @"YES", nil]; - NSMutableDictionary *environment = [NSDictionary dictionaryWithObjectsAndKeys:frameworkPath, @"DYLD_FRAMEWORK_PATH", @"YES", @"WEBKIT_UNSET_DYLD_FRAMEWORK_PATH", - pathToEnablerLib, @"DYLD_INSERT_LIBRARIES", [[NSBundle mainBundle] executablePath], @"WebKitAppPath", nil]; + + 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) diff --git a/WebKitTools/WebKitLauncherWin/Resource.h b/WebKitTools/WebKitLauncherWin/Resource.h new file mode 100644 index 0000000..f0c38ab --- /dev/null +++ b/WebKitTools/WebKitLauncherWin/Resource.h @@ -0,0 +1,19 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by WebKitLauncherWin.rc +// + +#define IDI_WEBKITLAUNCHERWIN 107 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS + +#define _APS_NO_MFC 130 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.cpp b/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.cpp new file mode 100644 index 0000000..f59050d --- /dev/null +++ b/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.cpp @@ -0,0 +1,95 @@ +/* + * 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 "resource.h" +#include <shlwapi.h> +#include <tchar.h> +#include <windows.h> + +static LPTSTR getStringValue(HKEY key, LPCTSTR valueName) +{ + DWORD type = 0; + DWORD bufferSize = 0; + if (RegQueryValueEx(key, valueName, 0, &type, 0, &bufferSize) != ERROR_SUCCESS || type != REG_SZ) + return 0; + + LPTSTR buffer = static_cast<LPTSTR>(malloc(bufferSize)); + if (RegQueryValueEx(key, valueName, 0, &type, reinterpret_cast<LPBYTE>(buffer), &bufferSize) != ERROR_SUCCESS) { + free(buffer); + return 0; + } + + return buffer; +} + +static LPTSTR applePathFromRegistry(LPCTSTR key, LPCTSTR value) +{ + HKEY applePathKey = 0; + LONG error = RegOpenKeyEx(HKEY_LOCAL_MACHINE, key, 0, KEY_READ, &applePathKey); + if (error != ERROR_SUCCESS) + return 0; + LPTSTR path = getStringValue(applePathKey, value); + RegCloseKey(applePathKey); + return path; +} + +static LPTSTR safariInstallDir() +{ + return applePathFromRegistry(TEXT("SOFTWARE\\Apple Computer, Inc.\\Safari"), TEXT("InstallDir")); +} + +static LPTSTR safariBrowserExe() +{ + return applePathFromRegistry(TEXT("SOFTWARE\\Apple Computer, Inc.\\Safari"), TEXT("BrowserExe")); +} + +int APIENTRY _tWinMain(HINSTANCE instance, HINSTANCE, LPTSTR commandLine, int) +{ + LPTSTR path = safariInstallDir(); + LPTSTR browserExe = safariBrowserExe(); + if (!path || !browserExe) { + MessageBox(0, TEXT("Safari must be installed to run a WebKit nightly. You can download Safari from http://www.apple.com/safari/download"), TEXT("Safari not found"), MB_ICONSTOP); + return 1; + } + + // Set WEBKITNIGHTLY environment variable to point to the nightly bits + TCHAR exePath[MAX_PATH]; + if (!GetModuleFileName(0, exePath, ARRAYSIZE(exePath))) + return 1; + if (!PathRemoveFileSpec(exePath)) + return 1; + SetEnvironmentVariable(TEXT("WEBKITNIGHTLY"), exePath); + + // Launch Safari as a child process + STARTUPINFO startupInfo = {0}; + startupInfo.cb = sizeof(startupInfo); + PROCESS_INFORMATION processInfo = {0}; + if (!CreateProcess(browserExe, commandLine, 0, 0, FALSE, NORMAL_PRIORITY_CLASS | CREATE_UNICODE_ENVIRONMENT, 0, path, &startupInfo, &processInfo)) + MessageBox(0, TEXT("Safari could not be launched. Please make sure you have the latest version of Safari installed and try again. You can download Safari from http://www.apple.com/safari/download"), TEXT("Safari launch failed"), MB_ICONSTOP); + + free(browserExe); + free(path); + return 0; +} diff --git a/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.rc b/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.rc new file mode 100644 index 0000000..65a2dfa --- /dev/null +++ b/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.rc @@ -0,0 +1,70 @@ +//Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE 9, 1 +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. + +IDI_WEBKITLAUNCHERWIN ICON "webkit.ico" + + + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.vcproj b/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.vcproj new file mode 100644 index 0000000..ee007ca --- /dev/null +++ b/WebKitTools/WebKitLauncherWin/WebKitLauncherWin.vcproj @@ -0,0 +1,123 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="8.00" + Name="WebKitLauncherWin" + ProjectGUID="{D09806DB-E58B-4646-8C9B-61101906C1E2}" + RootNamespace="WebKitLauncherWin" + Keyword="Win32Proj" + > + <Platforms> + <Platform + Name="Win32" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Release|Win32" + ConfigurationType="1" + InheritedPropertySheets="$(WebKitLibrariesDir)\tools\vsprops\common.vsprops;$(WebKitLibrariesDir)\tools\vsprops\release.vsprops" + CharacterSet="1" + 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" + AdditionalDependencies="shlwapi.lib" + OutputFile="$(OutDir)\WebKit$(WebKitConfigSuffix).exe" + /> + <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=".\WebKitLauncherWin.cpp" + > + </File> + </Filter> + <Filter + Name="Header Files" + Filter="h;hpp;hxx;hm;inl;inc;xsd" + UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" + > + <File + RelativePath=".\Resource.h" + > + </File> + </Filter> + <Filter + Name="Resource Files" + Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" + UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" + > + <File + RelativePath=".\webkit.ico" + > + </File> + <File + RelativePath=".\WebKitLauncherWin.rc" + > + </File> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> diff --git a/WebKitTools/WebKitLauncherWin/webkit.ico b/WebKitTools/WebKitLauncherWin/webkit.ico Binary files differnew file mode 100644 index 0000000..b86c9bb --- /dev/null +++ b/WebKitTools/WebKitLauncherWin/webkit.ico diff --git a/WebKitTools/WinLauncher/WinLauncher.cpp b/WebKitTools/WinLauncher/WinLauncher.cpp index 035077d..2dda619 100644 --- a/WebKitTools/WinLauncher/WinLauncher.cpp +++ b/WebKitTools/WinLauncher/WinLauncher.cpp @@ -25,7 +25,7 @@ #include "stdafx.h" #include "WinLauncher.h" -#include "WebKit.h" +#include <WebKit/WebKitCOMAPI.h> #include <commctrl.h> #include <objbase.h> @@ -177,7 +177,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, SetWindowLong(hURLBarWnd, GWL_WNDPROC,(long)MyEditProc); SetFocus(hURLBarWnd); - HRESULT hr = CoCreateInstance(CLSID_WebView, 0, CLSCTX_ALL, IID_IWebView, (void**)&gWebView); + HRESULT hr = WebKitCreateInstance(CLSID_WebView, 0, IID_IWebView, (void**)&gWebView); if (FAILED(hr)) goto exit; @@ -201,9 +201,8 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, hr = gWebView->mainFrame(&frame); if (FAILED(hr)) goto exit; - static BSTR defaultHTML = 0; - if (!defaultHTML) - defaultHTML = SysAllocString(TEXT("<p style=\"background-color: #00FF00\">Testing</p><img src=\"http://webkit.org/images/icon-gold.png\" alt=\"Face\"><div style=\"border: solid blue\" contenteditable=\"true\">div with blue border</div><ul><li>foo<li>bar<li>baz</ul>")); + + static BSTR defaultHTML = SysAllocString(TEXT("<p style=\"background-color: #00FF00\">Testing</p><img src=\"http://webkit.org/images/icon-gold.png\" alt=\"Face\"><div style=\"border: solid blue\" contenteditable=\"true\">div with blue border</div><ul><li>foo<li>bar<li>baz</ul>")); frame->loadHTMLString(defaultHTML, 0); frame->Release(); @@ -211,6 +210,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance, hr = gWebView->QueryInterface(IID_IWebViewPrivate, (void**)&viewExt); if (FAILED(hr)) goto exit; + hr = viewExt->viewWindow((OLE_HANDLE*) &gViewWindow); viewExt->Release(); if (FAILED(hr) || !gViewWindow) @@ -241,7 +241,7 @@ exit: // Shut down COM. OleUninitialize(); - return (int) msg.wParam; + return static_cast<int>(msg.wParam); } ATOM MyRegisterClass(HINSTANCE hInstance) @@ -324,7 +324,7 @@ LRESULT CALLBACK MyEditProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPara { switch (message) { case WM_CHAR: - if( wParam == 13 ) { // Enter Key + 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); @@ -367,23 +367,22 @@ static void loadURL(BSTR urlBStr) { IWebFrame* frame = 0; IWebMutableURLRequest* request = 0; - static BSTR methodBStr = 0; - if (!methodBStr) - methodBStr = SysAllocString(TEXT("GET")); + 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))) - urlBStr = fileURL; + SysReAllocString(&urlBStr, fileURL); } HRESULT hr = gWebView->mainFrame(&frame); if (FAILED(hr)) goto exit; - hr = CoCreateInstance(CLSID_WebMutableURLRequest, 0, CLSCTX_ALL, IID_IWebMutableURLRequest, (void**)&request); + hr = WebKitCreateInstance(CLSID_WebMutableURLRequest, 0, IID_IWebMutableURLRequest, (void**)&request); if (FAILED(hr)) goto exit; diff --git a/WebKitTools/WinLauncher/WinLauncher.h b/WebKitTools/WinLauncher/WinLauncher.h index 1f57bff..03e9dd5 100644 --- a/WebKitTools/WinLauncher/WinLauncher.h +++ b/WebKitTools/WinLauncher/WinLauncher.h @@ -26,7 +26,7 @@ #pragma once #include "resource.h" -#include "WebKit.h" +#include <WebKit/WebKit.h> class WinLauncherWebHost : public IWebFrameLoadDelegate { @@ -99,6 +99,12 @@ public: /* [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: diff --git a/WebKitTools/WinLauncher/WinLauncher.vcproj b/WebKitTools/WinLauncher/WinLauncher.vcproj index d1002ea..7e3c761 100644 --- a/WebKitTools/WinLauncher/WinLauncher.vcproj +++ b/WebKitTools/WinLauncher/WinLauncher.vcproj @@ -74,8 +74,8 @@ />
<Tool
Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
+ TypeLibraryFile=""
+ ComponentFileName=""
/>
<Tool
Name="VCXDCMakeTool"
@@ -156,8 +156,8 @@ />
<Tool
Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
+ TypeLibraryFile=""
+ ComponentFileName=""
/>
<Tool
Name="VCXDCMakeTool"
@@ -237,8 +237,8 @@ />
<Tool
Name="VCManifestTool"
- TypeLibraryFile="$(WebKitOutputDir)\lib\WebKit.tlb"
- ComponentFileName="WebKit$(WebKitDLLConfigSuffix)"
+ TypeLibraryFile=""
+ ComponentFileName=""
/>
<Tool
Name="VCXDCMakeTool"
diff --git a/WebKitTools/iExploder/htdocs/cssproperties.in b/WebKitTools/iExploder/htdocs/cssproperties.in index 2eb9e7a..8c7a98c 100644 --- a/WebKitTools/iExploder/htdocs/cssproperties.in +++ b/WebKitTools/iExploder/htdocs/cssproperties.in @@ -1,5 +1,13 @@ -# From WebKit svn r24249 (WebCore/css/CSSPropertyNames.in) +# From WebKit svn r44659 (WebCore/css/CSSPropertyNames.in) +-webkit-animation +-webkit-animation-delay +-webkit-animation-direction +-webkit-animation-duration +-webkit-animation-iteration-count +-webkit-animation-name +-webkit-animation-timing-function -webkit-appearance +-webkit-backface-visibility -webkit-background-clip -webkit-background-composite -webkit-background-origin @@ -22,6 +30,7 @@ -webkit-box-ordinal-group -webkit-box-orient -webkit-box-pack +-webkit-box-reflect -webkit-box-shadow -webkit-box-sizing -webkit-column-break-after @@ -35,7 +44,6 @@ -webkit-column-rule-width -webkit-column-width -webkit-columns --webkit-dashboard-region -webkit-font-size-delta -webkit-highlight -webkit-line-break @@ -50,9 +58,25 @@ -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-size -webkit-match-nearest-mail-blockquote-color -webkit-nbsp-mode -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 @@ -61,9 +85,21 @@ -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-color @@ -150,18 +186,13 @@ page page-break-after page-break-before page-break-inside +pointer-events position quotes resize right -scrollbar-3dlight-color -scrollbar-arrow-color -scrollbar-darkshadow-color -scrollbar-face-color -scrollbar-highlight-color -scrollbar-shadow-color -scrollbar-track-color size +src table-layout text-align text-decoration @@ -186,6 +217,7 @@ text-underline-style text-underline-width top unicode-bidi +unicode-range vertical-align visibility white-space @@ -195,6 +227,7 @@ word-break word-spacing word-wrap z-index +zoom # CSS3 properties - http://www.css3.info/preview/ background-clip diff --git a/WebKitTools/wx/browser/wscript b/WebKitTools/wx/browser/wscript new file mode 100644 index 0000000..fb8d81f --- /dev/null +++ b/WebKitTools/wx/browser/wscript @@ -0,0 +1,54 @@ +#! /usr/bin/env python + +# Copyright (C) 2009 Kevin Ollivier All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# wxBrowser sample app build script for the waf build system + +import sys + +from settings import * + +include_paths = [os.path.join(wk_root, 'WebKit', 'wx')] + +def set_options(opt): + common_set_options(opt) + +def configure(conf): + common_configure(conf) + +def build(bld): + import Options + + obj = bld.new_task_gen( + features = 'cxx cprogram', + includes = ' '.join(include_paths), + source = 'browser.cpp', + target = 'wxBrowser', + uselib = 'WX CURL ICU XSLT XML WXWEBKIT ' + waf_configname, + libpath = [output_dir], + uselib_local = '', + install_path = output_dir) + + if sys.platform.startswith('darwin'): + obj.mac_app = True diff --git a/WebKitTools/wx/build-wxwebkit b/WebKitTools/wx/build-wxwebkit index a4db5f2..db03251 100755 --- a/WebKitTools/wx/build-wxwebkit +++ b/WebKitTools/wx/build-wxwebkit @@ -43,7 +43,7 @@ fi WKWINLIBS=WebKitLibraries/win WINDEPS=" $WKWINLIBS/lib/pthreadVC2.dll" -WINDEPS="$WINDEPS $WKWINLIBS/bin/icuuc34.dll $WKWINLIBS/bin/icudt34.dll $WKWINLIBS/bin/icuin34.dll" +WINDEPS="$WINDEPS $WKWINLIBS/bin/icuuc40.dll $WKWINLIBS/bin/icudt40.dll $WKWINLIBS/bin/icuin40.dll" WINDEPS="$WINDEPS $WKWINLIBS/bin/libcurl.dll $WKWINLIBS/bin/libeay32.dll $WKWINLIBS/bin/ssleay32.dll $WKWINLIBS/bin/zlib1.dll" WINDEPS="$WINDEPS $WKWINLIBS/lib/sqlite3.dll" WINDEPS="$WINDEPS $WKWINLIBS/bin/libxml2.dll $WKWINLIBS/bin/libxslt.dll" @@ -179,7 +179,7 @@ function do_make { cd $olddir else if [ -f $dir/GNUmakefile ]; then - make -C $dir -f GNUmakefile $MAKE_ARGS CXXFLAGS="$cxxflags" $@ + make -C $dir -f GNUmakefile $MAKE_ARGS CXXFLAGS="$cxxflags -fvisibility=hidden -fvisibility-inlines-hidden" $@ fi fi if [ $? != 0 ]; then @@ -216,10 +216,13 @@ if [ $do_clean != 1 ]; then # we need to do this because Bakefile doesn't know which # platform it's running on with GNU format, and so it defaults # to the standard Unix file endings and linker args. - if [ "${OSTYPE:0:6}" = "darwin" ]; then - sed "s/libwebcore-wx.so/libwebcore-wx.dylib/" < $WK_ROOT/WebCore/GNUmakefile > temp - mv temp $WK_ROOT/WebCore/GNUmakefile - + if [ "${OSTYPE:0:6}" = "darwin" ]; then + sed "s/libjscore.so/libjscore.dylib/" < $WK_ROOT/JavaScriptCore/GNUmakefile > temp + mv temp $WK_ROOT/JavaScriptCore/GNUmakefile + + sed "s/\-shared/\-dynamiclib/" < $WK_ROOT/JavaScriptCore/GNUmakefile > temp + mv temp $WK_ROOT/JavaScriptCore/GNUmakefile + sed "s/\-shared/\-dynamiclib/" < $WK_ROOT/WebCore/GNUmakefile > temp mv temp $WK_ROOT/WebCore/GNUmakefile @@ -240,24 +243,43 @@ if [ $do_clean != 1 ]; then $WK_ROOT/WebKitTools/wx/install-unix-extras fi + + export CREATE_HASH_TABLE="$WK_ROOT/JavaScriptCore/create_hash_table" cd $WK_ROOT/JavaScriptCore - ./make-generated-sources.sh + mkdir -p DerivedSources/JavaScriptCore + cd DerivedSources/JavaScriptCore + + make -f ../../DerivedSources.make JavaScriptCore=../.. BUILT_PRODUCTS_DIR=../.. all FEATURE_DEFINES="ENABLE_DATABASE ENABLE_XSLT ENABLE_JAVASCRIPT_DEBUGGER" if [ $? != 0 ]; then - exit $? + exit 1 fi cd $WK_ROOT/WebCore - ./make-generated-sources.sh FEATURE_DEFINES="ENABLE_DATABASE" + mkdir -p DerivedSources/WebCore + cd DerivedSources/WebCore + make -f ../../DerivedSources.make all WebCore=../.. SOURCE_ROOT=../.. FEATURE_DEFINES="ENABLE_DATABASE ENABLE_XSLT ENABLE_JAVASCRIPT_DEBUGGER" if [ $? != 0 ]; then - exit $? + exit 1 fi fi fi -if [ $do_build == 1 -o $do_clean == 1 ]; then - # Build steps +if [ $do_build == 1 -o $do_clean == 1 ]; then WXGC_DEFINE="" + EXTRA_CPPFLAGS="" + + if [ "${OSTYPE:0:6}" == "cygwin" ]; then + PLATFORM_OS="win" + elif [ "${OSTYPE:0:6}" == "darwin" ]; then + PLATFORM_OS="mac" + EXTRA_CPPFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040" + use_wxgc=1 + else + PLATFORM_OS="linux" + use_wxgc=1 + fi + if [ $use_wxgc == 1 ]; then WXGC_DEFINE="-DWTF_USE_WXGC=1" fi @@ -265,31 +287,23 @@ if [ $do_build == 1 -o $do_clean == 1 ]; then if [ "${OSTYPE:0:6}" == "cygwin" -a $wxdebug == 1 ]; then WX_EXT=d fi - if [ "${OSTYPE:0:6}" == "cygwin" -a $wxpython == 1 ]; then + if [ $wxpython == 1 ]; then other_args=WX_PYTHON=1 WX_EXT=h wxdebug=1 fi - - if [ "${OSTYPE:0:6}" == "cygwin" ]; then - PLATFORM_OS="win" - elif [ "${OSTYPE:0:6}" == "darwin" ]; then - PLATFORM_OS="mac" - else - PLATFORM_OS="linux" - use_wxgc=1 # Linux requires us to use wxgc to get proper drawing. - fi WINDEPS="$WINDEPS $WXWIN/lib/vc_dll/wxmsw28u${WX_EXT}_core_vc.dll $WXWIN/lib/vc_dll/wxbase28u${WX_EXT}_vc.dll" - do_make $WK_ROOT/JavaScriptCore "-DBUILDING_WX__=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args + do_make $WK_ROOT/JavaScriptCore "-DBUILDING_WX__=1 $WXGC_DEFINE $EXTRA_CPPFLAGS" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args mkdir -p $WEBKITOUTPUTDIR/JavaScriptCore cp -p $WK_ROOT/JavaScriptCore/API/*.h $WEBKITOUTPUTDIR/JavaScriptCore/ - do_make $WK_ROOT/WebCore "-DBUILDING_WX__=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug WEBKIT_ROOT=$WK_ROOTDIR DEBUG=$debug PLATFORM_OS=$PLATFORM_OS $other_args - do_make $WK_ROOT/WebKit/wx "-DBUILDING_WX__=1 -DWXMAKINGDLL_WEBKIT=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args - do_make $WK_ROOT/WebKitTools/wx/browser "-DBUILDING_WX__=1 -DWXUSINGDLL_WEBKIT=1 $WXGC_DEFINE" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args + do_make $WK_ROOT/WebCore "-DBUILDING_WX__=1 $WXGC_DEFINE $EXTRA_CPPFLAGS" WX_DEBUG=$wxdebug WEBKIT_ROOT=$WK_ROOTDIR DEBUG=$debug PLATFORM_OS=$PLATFORM_OS $other_args + do_make $WK_ROOT/WebKit/wx "-DBUILDING_WX__=1 -DWXMAKINGDLL_WEBKIT=1 $WXGC_DEFINE $EXTRA_CPPFLAGS" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args + do_make $WK_ROOT/WebKitTools/wx/browser "-DBUILDING_WX__=1 -DWXUSINGDLL_WEBKIT=1 $WXGC_DEFINE $EXTRA_CPPFLAGS" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args + do_make $WK_ROOT/WebKitTools/DumpRenderTree/wx "-DBUILDING_WX__=1 -DWXUSINGDLL_WEBKIT=1 $WXGC_DEFINE $EXTRA_CPPFLAGS" WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS $other_args if [ $do_clean == 1 ]; then rm -rf $WK_ROOT/JavaScriptCore/DerivedSources @@ -349,17 +363,19 @@ if [ $do_build == 1 -o $do_clean == 1 ]; then cp webview.py $WEBKITOUTPUTDIR/webview.py PY_INCLUDE=`python -c "import sys,distutils.sysconfig; sys.stdout.write(distutils.sysconfig.get_python_inc())"` - PY_VERSION=`python -c "import sys; sys.stdout.write(str(sys.version_info[0]) + str(sys.version_info[1]))"` - PY_LIBDIR=`python -c "import distutils.sysconfig; import sys; sys.stdout.write(distutils.sysconfig.PREFIX)"` if [ "${OSTYPE:0:6}" == "cygwin" ]; then + PY_LIBDIR=`python -c "import distutils.sysconfig; import sys; sys.stdout.write(distutils.sysconfig.PREFIX)"` PY_LIBDIR="$PY_LIBDIR\\Libs" + PY_LIB=`python -c "import sys; sys.stdout.write('python' + sys.version[:3])"` + PY_LIB=`python -c "sys.stdout.write('$PY_LIB'.replace('.', ''))"` else - PY_LIBDIR="$PY_LIBDIR/lib" + PY_LIB=`python-config --libs` + PY_LIBDIR=`python-config --ldflags` fi - do_make $WK_ROOT/WebKit/wx/bindings/python "-DBUILDING_WX__=1 -DWXUSINGDLL=1 -DWXUSINGDLL_WEBKIT=1 -I$PY_INCLUDE -I$WX_PREFIX/wxPython/include -I$WX_PREFIX/../wxPython/include $WXGC_DEFINE" \ - WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS PYTHON_VERSION=$PY_VERSION PYTHON_LIBDIR=$PY_LIBDIR $other_args + do_make $WK_ROOT/WebKit/wx/bindings/python "-DBUILDING_WX__=1 -DWXUSINGDLL=1 -DWXUSINGDLL_WEBKIT=1 -I$PY_INCLUDE -I$WX_PREFIX/wxPython/include -I$WX_PREFIX/../wxPython/include $WXGC_DEFINE $EXTRA_CPPFLAGS" \ + WX_DEBUG=$wxdebug DEBUG=$debug WEBKIT_ROOT=$WK_ROOTDIR PLATFORM_OS=$PLATFORM_OS PYTHON_LIB=$PY_LIB PYTHON_LIBDIR=$PY_LIBDIR $other_args if [ "${OSTYPE:0:6}" == "cygwin" ]; then if [ -f $WEBKITOUTPUTDIR/_webview.pyd -a -f $WEBKITOUTPUTDIR/_webview.dll ]; then rm $WEBKITOUTPUTDIR/_webview.pyd diff --git a/WebKitTools/wx/build/build_utils.py b/WebKitTools/wx/build/build_utils.py new file mode 100644 index 0000000..f6daf3a --- /dev/null +++ b/WebKitTools/wx/build/build_utils.py @@ -0,0 +1,143 @@ +# Copyright (C) 2009 Kevin Ollivier All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Helper functions for the WebKit build. + +import glob +import os +import sys +import urllib +import urlparse + +import Logs + +def get_output(command): + """ + Windows-compatible function for getting output from a command. + """ + f = os.popen(command) + return f.read().strip() + +def get_excludes(root, patterns): + """ + Get a list of exclude patterns going down several dirs. + TODO: Make this fully recursive. + """ + excludes = [] + + for pattern in patterns: + subdir_pattern = os.sep + '*' + for subdir in [subdir_pattern, subdir_pattern*2, subdir_pattern*3]: + adir = root + subdir + os.sep + pattern + files = glob.glob(adir) + for afile in files: + excludes.append(os.path.basename(afile)) + + return excludes + +def get_dirs_for_features(root, features, dirs): + """ + Find which directories to include in the list of build dirs based upon the + enabled port(s) and features. + """ + outdirs = dirs + for adir in dirs: + for feature in features: + relpath = os.path.join(adir, feature) + featuredir = os.path.join(root, relpath) + if os.path.exists(featuredir) and not relpath in outdirs: + outdirs.append(relpath) + + return outdirs + +def download_if_newer(url, destdir): + """ + Checks if the file on the server is newer than the one in the user's tree, + and if so, downloads it. + + Returns the filename of the downloaded file if downloaded, or None if + the existing file matches the one on the server. + """ + obj = urlparse.urlparse(url) + filename = os.path.basename(obj.path) + destfile = os.path.join(destdir, filename) + + urlobj = urllib.urlopen(url) + size = long(urlobj.info().getheader('Content-Length')) + + def download_callback(downloaded, block_size, total_size): + downloaded = block_size * downloaded + if downloaded > total_size: + downloaded = total_size + sys.stdout.write('%s %d of %d bytes downloaded\r' % (filename, downloaded, total_size)) + + # NB: We don't check modified time as Python doesn't yet handle timezone conversion + # properly when converting strings to time objects. + if not os.path.exists(destfile) or os.path.getsize(destfile) != size: + urllib.urlretrieve(url, destfile, download_callback) + print '' + return destfile + + return None + +def update_wx_deps(wk_root, msvc_version='msvc2008'): + """ + Download and update tools needed to build the wx port. + """ + Logs.info('Ensuring wxWebKit dependencies are up-to-date.') + + wklibs_dir = os.path.join(wk_root, 'WebKitLibraries') + waf = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/waf', os.path.join(wk_root, 'WebKitTools', 'wx')) + if waf: + # TODO: Make the build restart itself after an update. + Logs.warn('Build system updated, please restart build.') + sys.exit(1) + + # since this module is still experimental + #swig_module = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/swig.py', os.path.join(wk_root, 'WebKit', 'wx', 'bindings', 'python')) + + if sys.platform.startswith('win'): + Logs.info('downloading deps package') + archive = download_if_newer('http://wxwebkit.wxcommunity.com/downloads/deps/wxWebKitDeps-%s.zip' % msvc_version, wklibs_dir) + if archive and os.path.exists(archive): + os.system('unzip -o %s -d %s' % (archive, os.path.join(wklibs_dir, msvc_version))) + + elif sys.platform.startswith('darwin'): + os.system('%s/WebKitTools/wx/install-unix-extras' % wk_root) + +def includeDirsForSources(sources): + include_dirs = [] + for group in sources: + for source in group: + dirname = os.path.dirname(source) + if not dirname in include_dirs: + include_dirs.append(dirname) + + return include_dirs + +def flattenSources(sources): + flat_sources = [] + for group in sources: + flat_sources.extend(group) + + return flat_sources diff --git a/WebKitTools/wx/build/settings.py b/WebKitTools/wx/build/settings.py new file mode 100644 index 0000000..b09f0bc --- /dev/null +++ b/WebKitTools/wx/build/settings.py @@ -0,0 +1,265 @@ +# Copyright (C) 2009 Kevin Ollivier All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Common elements of the waf build system shared by all projects. + +import commands +import os +import platform +import sys + +from build_utils import * +from waf_extensions import * + +# to be moved to wx when it supports more configs +from wxpresets import * + +wk_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../..')) + +if sys.platform.startswith('win'): + if not 'WXWIN' in os.environ: + print "Please set WXWIN to the directory containing wxWidgets." + sys.exit(1) + + wx_root = os.environ['WXWIN'] +else: + wx_root = commands.getoutput('wx-config --prefix') + +jscore_dir = os.path.join(wk_root, 'JavaScriptCore') +webcore_dir = os.path.join(wk_root, 'WebCore') +wklibs_dir = os.path.join(wk_root, 'WebKitLibraries') + +common_defines = [] +common_cxxflags = [] +common_includes = [] +common_libs = [] +common_libpaths = [] +common_frameworks = [] + +jscore_dirs = [ + 'API', + 'bytecode', + 'bytecompiler', + 'debugger', + 'DerivedSources', + 'interpreter', + 'jit', + 'parser', + 'pcre', + 'profiler', + 'runtime', + 'wtf', + 'wtf/unicode', + 'wtf/unicode/icu', +] + +webcore_dirs = [ + 'accessibility', + 'bindings/js', + 'bridge', + 'bridge/c', + 'css', + 'DerivedSources', + 'dom', + 'dom/default', + 'editing', + 'history', + 'html', + 'inspector', + 'loader', + 'loader/appcache', + 'loader/archive', + 'loader/icon', + 'page', + 'page/animation', + 'platform', + 'platform/animation', + 'platform/graphics', + 'platform/graphics/transforms', + 'platform/image-decoders', + 'platform/image-decoders/bmp', + 'platform/image-decoders/gif', + 'platform/image-decoders/ico', + 'platform/image-decoders/jpeg', + 'platform/image-decoders/png', + 'platform/image-decoders/xbm', + 'platform/image-decoders/zlib', + 'platform/network', + 'platform/sql', + 'platform/text', + 'plugins', + 'rendering', + 'rendering/style', + 'storage', + 'xml' +] + +config_file = os.path.join(wk_root, 'WebKitBuild', 'Configuration') +config = 'Debug' + +if os.path.exists(config_file): + config = open(config_file).read() + +output_dir = os.path.join(wk_root, 'WebKitBuild', config) + +waf_configname = config.upper() + +build_port = "wx" +building_on_win32 = sys.platform.startswith('win') + +if building_on_win32: + if config == 'Release': + waf_configname = waf_configname + ' CRT_MULTITHREADED_DLL' + else: + waf_configname = waf_configname + ' CRT_MULTITHREADED_DLL_DBG' + +create_hash_table = wk_root + "/JavaScriptCore/create_hash_table" +if building_on_win32: + create_hash_table = get_output('cygpath --unix "%s"' % create_hash_table) +os.environ['CREATE_HASH_TABLE'] = create_hash_table + +feature_defines = ['ENABLE_DATABASE', 'ENABLE_XSLT', 'ENABLE_JAVASCRIPT_DEBUGGER'] + +def common_set_options(opt): + """ + Initialize common options provided to the user. + """ + opt.tool_options('compiler_cxx') + opt.tool_options('compiler_cc') + opt.tool_options('python') + + opt.add_option('--wxpython', action='store_true', default=False, help='Create the wxPython bindings.') + +def common_configure(conf): + """ + Configuration used by all targets, called from the target's configure() step. + """ + conf.check_tool('compiler_cxx') + conf.check_tool('compiler_cc') + conf.check_tool('python') + conf.check_python_headers() + + if sys.platform.startswith('darwin'): + conf.check_tool('osx') + + msvc_version = 'msvc2008' + if building_on_win32: + found_versions = conf.get_msvc_versions() + if found_versions[0][0] == 'msvc 9.0': + msvc_version = 'msvc2008' + elif found_versions[0][0] == 'msvc 8.0': + msvc_version = 'msvc2005' + + msvclibs_dir = '' + if build_port == "wx": + update_wx_deps(wk_root, msvc_version) + msvclibs_dir = os.path.join(wklibs_dir, msvc_version, 'win') + + conf.env.append_value('CXXDEFINES', ['BUILDING_WX__=1', 'WTF_USE_WXGC=1']) + + if building_on_win32: + conf.env.append_value('LIBPATH', os.path.join(msvclibs_dir, 'lib')) + # wx settings + wxdefines, wxincludes, wxlibs, wxlibpaths = get_wxmsw_settings(wx_root, shared=True, unicode=True, wxPython=True) + conf.env['CXXDEFINES_WX'] = wxdefines + conf.env['CPPPATH_WX'] = wxincludes + conf.env['LIB_WX'] = wxlibs + conf.env['LIBPATH_WX'] = wxlibpaths + + if sys.platform.startswith('darwin'): + conf.env['LIB_ICU'] = ['icucore'] + # Apple does not ship the ICU headers with Mac OS X, so WebKit includes a copy of 3.2 headers + conf.env['CPPPATH_ICU'] = [os.path.join(jscore_dir, 'icu'), os.path.join(webcore_dir, 'icu')] + + conf.env.append_value('CPPPATH', wklibs_dir) + conf.env.append_value('LIBPATH', wklibs_dir) + + #conf.env['PREFIX'] = output_dir + + libprefix = '' + if building_on_win32: + libprefix = 'lib' + + conf.env['LIB_JSCORE'] = [libprefix + 'jscore'] + conf.env['LIB_WEBCORE'] = [libprefix + 'webcore'] + conf.env['LIB_WXWEBKIT'] = ['wxwebkit'] + conf.env['CXXDEFINES_WXWEBKIT'] = ['WXUSINGDLL_WEBKIT'] + + conf.env.append_value('CXXDEFINES', feature_defines) + if config == 'Release': + conf.env.append_value('CPPDEFINES', 'NDEBUG') + + if building_on_win32: + conf.env.append_value('CPPPATH', [ + os.path.join(jscore_dir, 'os-win32'), + os.path.join(msvclibs_dir, 'include'), + os.path.join(msvclibs_dir, 'include', 'pthreads'), + os.path.join(msvclibs_dir, 'lib'), + ]) + + conf.env.append_value('LIB', ['libpng', 'libjpeg', 'pthreadVC2']) + # common win libs + conf.env.append_value('LIB', [ + 'kernel32', 'user32','gdi32','comdlg32','winspool','winmm', + 'shell32', 'comctl32', 'ole32', 'oleaut32', 'uuid', 'advapi32', + 'wsock32', 'gdiplus']) + + conf.env['LIB_ICU'] = ['icudt', 'icule', 'iculx', 'icuuc', 'icuin', 'icuio', 'icutu'] + + #curl + conf.env['LIB_CURL'] = ['libcurl'] + + #sqlite3 + conf.env['CPPPATH_SQLITE3'] = [os.path.join(msvclibs_dir, 'include', 'SQLite')] + conf.env['LIB_SQLITE3'] = ['sqlite3'] + + #libxml2 + conf.env['LIB_XML'] = ['libxml2'] + + #libxslt + conf.env['LIB_XSLT'] = ['libxslt'] + else: + if build_port == 'wx': + conf.env.append_value('LIB', ['png', 'pthread']) + conf.env.append_value('LIBPATH', os.path.join(wklibs_dir, 'unix', 'lib')) + conf.env.append_value('CPPPATH', os.path.join(wklibs_dir, 'unix', 'include')) + conf.env.append_value('CXXFLAGS', ['-fPIC', '-DPIC']) + + conf.check_cfg(path='wx-config', args='--cxxflags --libs', package='', uselib_store='WX') + + conf.check_cfg(path='xslt-config', args='--cflags --libs', package='', uselib_store='XSLT') + conf.check_cfg(path='xml2-config', args='--cflags --libs', package='', uselib_store='XML') + conf.check_cfg(path='curl-config', args='--cflags --libs', package='', uselib_store='CURL') + if sys.platform.startswith('darwin'): + conf.env.append_value('LIB', ['WebCoreSQLite3']) + + if not sys.platform.startswith('darwin'): + conf.check_cfg(package='cairo', args='--cflags --libs', uselib_store='WX') + conf.check_cfg(package='pango', args='--cflags --libs', uselib_store='WX') + conf.check_cfg(package='gtk+-2.0', args='--cflags --libs', uselib_store='WX') + conf.check_cfg(package='sqlite3', args='--cflags --libs', uselib_store='SQLITE3') + conf.check_cfg(path='icu-config', args='--cflags --ldflags', package='', uselib_store='ICU') + + + + diff --git a/WebKitTools/wx/build/waf_extensions.py b/WebKitTools/wx/build/waf_extensions.py new file mode 100644 index 0000000..fcf34df --- /dev/null +++ b/WebKitTools/wx/build/waf_extensions.py @@ -0,0 +1,79 @@ +# Copyright (C) 2009 Kevin Ollivier All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# This module is for code where we override waf's default behavior or extend waf + +import os +import subprocess +import sys + +import Utils + +# version of exec_command that handles Windows command lines longer than 32000 chars +def exec_command(s, **kw): + filename = '' + if sys.platform.startswith('win') and len(' '.join(s)) > 32000: + import tempfile + file = tempfile.NamedTemporaryFile(delete=False) + filename = file.name + file.write(' '.join(s[1:])) + file.close() + + s = [s[0], '@' + filename] + + if 'log' in kw: + kw['stdout'] = kw['stderr'] = kw['log'] + del(kw['log']) + kw['shell'] = isinstance(s, str) + + def cleanup(): + try: + if os.path.exists(filename): + os.remove(filename) + except: + pass + + try: + proc = subprocess.Popen(s, **kw) + result = proc.wait() + cleanup() + return result + + except OSError: + cleanup() + raise + +Utils.exec_command = exec_command + +# Better performing h_file to keep hashing from consuming lots of time +import stat +def h_file(filename): + st = os.stat(filename) + if stat.S_ISDIR(st[stat.ST_MODE]): raise IOError('not a file') + m = Utils.md5() + m.update(str(st.st_mtime)) + m.update(str(st.st_size)) + m.update(filename) + return m.digest() + +Utils.h_file = h_file diff --git a/WebKitTools/wx/build/wxpresets.py b/WebKitTools/wx/build/wxpresets.py new file mode 100644 index 0000000..677720c --- /dev/null +++ b/WebKitTools/wx/build/wxpresets.py @@ -0,0 +1,78 @@ +# Copyright (C) 2009 Kevin Ollivier All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY +# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY +# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Library for functions to determine wx settings based on configuration + +import os + +def get_wxmsw_settings(wx_root, shared = False, unicode = False, debug = False, wxPython=False): + if not os.path.exists(wx_root): + print "Directory %s does not exist." % wx_root + sys.exit(1) + + defines = ['__WXMSW__'] + includes = [os.path.join(wx_root, 'include')] + cxxflags = [] + libs = [] + libpaths = [] + + libdir = os.path.join(wx_root, 'lib') + ext = '' + postfix = 'vc' + + if shared: + defines.append('WXUSINGDLL') + libdir = os.path.join(libdir, 'vc_dll') + else: + libdir = os.path.join(libdir, 'vc_lib') + + if unicode: + defines.append('_UNICODE') + ext += 'u' + + depext = '' + if wxPython: + ext += 'h' + depext += 'h' + elif debug: + ext += 'd' + depext += 'd' + + configdir = os.path.join(libdir, 'msw' + ext) + libpaths.append(libdir) + includes.append(configdir) + + def get_wxlib_name(name): + prefix = 'wxmsw' + if name == 'base': + return 'wxbase28%s' % (ext) + + return "wxmsw28%s_%s" % (ext, name) + + libs.extend(['wxzlib' + depext, 'wxjpeg' + depext, 'wxpng' + depext, 'wxexpat' + depext]) + libs.extend([get_wxlib_name('base'), get_wxlib_name('core')]) + + if wxPython or debug: + defines.append('__WXDEBUG__') + + return (defines, includes, libs, libpaths) |