04/15/10:

Remove the check for the main frame's scheme when deciding which
v8 extensions to add to a script context. Instead, Chromium will
handle that check elsewhere to allow finer-grained control over
what APIs we expose to web pages.​https://bugs.webkit.org/show_bug.cgi?id=37681

For menu lists, if the selection is not indicated by the html file, the first <option> will be
selected after loading the page or reseting the form. On the other hand listboxes may have no
element selected after loading the page or reseting the form.

When NO_LISTBOX_RENDERING is enabled listboxes becomes menu lists. Those <select multiple>
that did not have selected elements, now being menu lists, will have the first <option>
selected. That is the behavior difference that this patch corrects.

When NO_LISTBOX_RENDERING is enabled usesMenuList() always returns true then usesMenuList() cannot
be used to decide about initial selection of the elements. This patch replaces (usesMenuLists())
by (!multiple && size <= 1) where initial selection is considered.

When we started writing these URL tests, I didn't understand how to
handle the unicodes test cases properly. With a bunch of help (and a
pointer to ​http://rishida.net/tools/conversion/), I've fixed these to
be more or less faithful to the original unit tests.

html/canvas/WebGLProgram.cpp:
(WebCore::WebGLProgram::cacheActiveAttribLocations): Cache active attribute locations for a program at linkProgram time.
(WebCore::WebGLProgram::getActiveAttribLocation): Get the cached attribute location.
(WebCore::WebGLProgram::numActiveAttribLocations): Get the number of cached attribute locations.

html/canvas/WebGLProgram.h: Add attribute locations member.

html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::validateRenderingState): Add logic not to validate those attributes that do not belong to the current program.
(WebCore::WebGLRenderingContext::linkProgram): Call cacheActiveAttribLocations().

Patch by Adam Roben <​aroben@apple.com> on 2010-04-16
In some situations (e.g., when using SOFT_LINK_OPTIONAL), we expect soft-link libraries not
to be able to be found in all cases. So we shouldn't assert that they're always found.

storage/change-version-handle-reuse.html: Refactored to share code with the worker version of the test.

storage/change-version-handle-reuse-expected.html: Removed reference to reloading, which this test doesn't do.

storage/change-version-handle-reuse.js: This is the extracted shared core of the test.

storage/execute-sql-args.html: Refactored to share code with the worker version of the test.

storage/execute-sql-args.js: This is the extracted shared core of the test.

These are the worker versions of the tests; they're tiny shims around shared code.

fast/workers/execute-sql-args-worker-expected.txt: Added.

fast/workers/execute-sql-args-worker.html: Added.

fast/workers/change-version-handle-reuse-worker-expected.txt: Added.

fast/workers/change-version-handle-reuse-worker.html: Added.
This file gets included from worker database tests; it does all the boilerplate that's needed on the DOM side.

fast/workers/resources/database-worker-controller.js: Added.
This file is the boilerplate for the worker side of the database tests. It will import and run the actual test on command, and will report back completion and exceptions.

bindings/v8/custom/V8WorkerContextCustom.cpp: Add openDatabase stub; Chromium will need work both in V8 and in the browser process before we can turn this on there.
(WebCore::V8WorkerContext::openDatabaseCallback):

DumpRenderTree/win/EventSender.h:
Tell EventSender if it's being created for a top frame.

DumpRenderTree/win/FrameLoadDelegate.cpp:
(FrameLoadDelegate::didClearWindowObjectForFrameInStandardWorld): We only want to reset
EventSender machinery when a new test is loaded, not when an iframe (or just its global
object) is created.

(top level): When a test crashes or times out, break out of the main loop if
stopRunningTestsEarlyIfNeeded returns true. Moved some code from the bottom of the main loop
from here...
(stopRunningTestsEarlyIfNeeded): ...to here.

Add a way to override the user-visible name for the test binary since
some ports don't call it DumpRenderTree (e.g., Chromium Win uses
test_shell, Chromium Mac uses TestShell) by adding a driver_name()
method to the Port interface.

Rework the pseudo cache on RenderStyles to support nesting, i.e., a pseudo hanging off a pseudo. The existing model gets
confused by this concept, since it relies on a singly linked list of chained pseudo styles (instead of a Vector owned by a primary
style). I changed the style cache to be a Vector instead.

Reworked both styleForElement and pseudoStyleForElement to resolve visited styles first, since in the pseudoStyleForElement case
you need to do this in order to know to allocate an unvisited pseudo style even if one shouldn't normally exist.

Fixes breakage of the following tests due to an error in V8 bindings for
NamedNodeMap:
hc_namednodemapinuseattributeerr.html
hc_namednodemapsetnameditemreturnvalue.html
hc_namednodemapwrongdocumenterr.html
hc_namednodemapinvalidtype1.html
NamedNodeMap-setNamedItem-crash.html

The regression was caused by r56552, which introduced a fix to bug
webkit.org/b/21300. The bug solved an issue with the resize handle on mac,
but did it in a way that affected all Qt platforms and thus broke the behavior
on non-mac platforms.

This patch makes the mac specific change ifdef'ed and only applied for the mac
platform.

This will be used by XHR.send/open, Canvas.*, WebGL.* methods that are currently custom. When more than a single overload exists for a method, the correct overload is chosen based on the total number of arguments passed as well as the values passed to non-primitive arguments.

Overload dispatch order depends on the order the functions are defined in the IDL. Overloads must be specified from the most precise (overloads with wrapper type arguments) to the least precise (overloads with only primitive type arguments).

After discussions at the WebKit contributors meeting, we decided that
this is a currently unused state without a good future use case in the
Touch API and thus decided to remove it. This patch actions that decision.

After discussions at the WebKit contributors meeting, we decided
that this is a currently unused state without a good future use
case in the Touch API and thus decided to remove it. This patch
actions that decision.

As the TouchStationary state is not handled in the EventHandler,
there is no change in functionality so no new tests are required.

Fixed complexity and performance FIXME created by using KURL in the UI
process -- it turned out that everywhere we were using KURL, we could
have just used String instead. (That's how Windows WebKit works, too.)

Reviewed by Anders Carlsson.

I kept WKURLRef and WKStringRef distinct opaque types in the API for now,
though, since there may be profit in changing their backing stores in the
future, and it's nice for the API to encode a difference between generic
strings and strings that are valid, canonical URLs.

QObjects exported to the QWebkit javascript with properties that are
a null "QObject*" cause Segmentation Fault.

If an QObject is added to the javascript context and it contains
properties of the type QObject* with NULL value, calling the property
causes Segmentation Fault.
So now the code below properly checks for null pointers:

QObjects exported to the QWebkit javascript with properties that are
a null "QObject*" cause Segmentation Fault.

If an QObject is added to the javascript context and it contains
properties of the type QObject* with NULL value, calling the property
causes Segmentation Fault.

Follow the tests for the corrections done over WebCore.

tests/qwebframe/tst_qwebframe.cpp:
(MyQObject::MyQObject): init the field m_objectStar
(MyQObject::objectStarProperty): read the Object* prop
(MyQObject::setObjectStarProperty): write the Object* prop
(tst_QWebFrame::getSetStaticProperty): new tests for the new prop

I'm not super happy with how these test turned out. It's difficult to
test these cases with this methodology because most of the cases get
treated as relative URLs. I tired using the "protocol" property of the
HTMLAnchorElement, but that often caused the test case to be ignored
for reasons I don't fully understand.

fast/url/resources/utilities.js:
(setBaseURL):

In the course of trying various variations of this test, I wrote
this function. It seemed useful, so I left it here for the benefit
of future test writing.

RenderBox::computeRectForRepaint() failed to set the 'fixed' flag correctly
for elements that had both fixed position and a transform. If the element has
a transform, 'fixed' should only remain true if the element itself is fixed
position.

Moved frame/iframe checks from Attr to Node on inherited members.
Node child manipulation methods now return NOT_SUPPORTED_ERR if used
on a frame/iframe src attribute.
NamedNodeMap set methods now perform frame/iframe src checks.
Moved allowSettingSrcToJavascriptURL static helper function from
JSElementCustom.cpp to exported function in JSDOMBinding.h.

Support relative URLs for notifications on Chromium. They weren't working previously because WebCore was inserting
the relative URL into a KURL instance, but when KURL is backed by GURL as it is on Chromium, relative URLs are
unsupported. Fixed by resolving the relative URL first.

Support relative URLs for notifications on Chromium. They weren't working previously because WebCore was inserting
the relative URL into a KURL instance, but when KURL is backed by GURL as it is on Chromium, relative URLs are
unsupported. Fixed by resolving the relative URL first.

Support relative URLs for notifications on Chromium. They weren't working previously because WebCore was inserting
the relative URL into a KURL instance, but when KURL is backed by GURL as it is on Chromium, relative URLs are
unsupported. Fixed by resolving the relative URL first.

Add a way for the buildbot to kill any old processes that are running. This
is useful because the Windows bots can get in states where a process remains
running (httpd.exe, DumpRenderTree.exe), which causes the bots to get in a red
state, and the processes must be killed manually.

Reviewed by Adam Roben.

BuildSlaveSupport/build.webkit.org-config/master.cfg: If we are on Windows, kill

When building on (Snow) Leopard but targeting Tiger
(TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
WebKit would crash on Tiger because the tags passed to mmap
caused those function calls to fail.

Conversely, when building on Tiger but targeting Leopard
(BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
would crash on Leopard because the tags passed to vm_map and
vm_allocate caused those function calls to fail.

Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
govern the tag definitions. Use the same tags for vm_map and
vm_allocate regardless of target, since they work on
both. Fall back to the mmap tags that work on Tiger (that is,
"no tags") if targeting Tiger, since those tags also work on
Leopard.

If the browsing context's session history contains only one Document,
and that was the about:blank Document created when the browsing context
was created, then the navigation must be done with replacement enabled.

This patch adds bare-bones integrtion with Rietveld for code reviews.
The behavior is hidden behind the --fancy-review command line flag.
Currently, there's no support for uploading more than one patch per
issue (which is a nice feature of Rietveld). The plan is to play with
this for a bit and see if it's useful.

Modified from Adam's original patch to autoinstall the rietveld upload script.

(WebCore::SecurityOrigin::addOriginAccessWhitelistEntry): Use the add method to prevent a
second hash lookup.
(WebCore::SecurityOrigin::removeOriginAccessWhitelistEntry): Added. Find a matching
OriginAccessEntry and remove it.

We were failing to read reviewers out of ChangeLogs
when the reviewer has unicode characters in his/her name.
I fixed this by explicitly decoding from utf8 every time we
read in a ChangeLog file (they are always UTF8).

In the Haiku port, there is no mapping between native widgets
and WebCore Widget instances. There is only a top-level BView
which renders a web page into a bitmap. For certain WebCore widget
functionality, we need to access this BView, like for setting the
current cursor or forcing focus. On the other hand, setting a
platform widget pointer on Widget results into completely different
behavior, like ScrollView tries to forward everything instead of
handling stuff itself. To make this work, the pointer to a "top-level"
BView is stored in every Widget for the Haiku port.

Adds support for text elements as clipPath, heterogenous clip rules, as well
as clipping of clipPath.
A fast code path let platforms clip simple shapes directly. All other variants
are drawn to a seperate ImageBuffer, which is used as a mask. This happens the same
way we like we do it on SVG Masking. This needs temporary changes to the RenderStyle
of clipPath childs. Values like stroke, resources, opacity have to be ignored.

RenderPath caches repaint rectangles (fill/stroke bbox etc.) though this caching
was effectively useless because every layout() call caused them to be reset to empty rects.
Furthermore RenderPath::layout() queried the SVG DOM upon every invocation to retrieve
the Path object, instead of only doing it when necessary. Even the TransformationMatrix
was polled everytime from the SVG DOM.

Move the knownledge wheter we need to update path/transform into the render tree and
only update when necessary. This should result in a huge performance increase, with
the drawback of adding slightly more memory, because we need to add booleans indicating
the status of path/transform (is dirty?).

I rushed the first version of this test because I wanted to get the
framework in the tree for other folks to work on the other tests. The
expected.txt file matches KURL but the PASS/FAIL indiciations match
GURL.

Only the mac needs java support files, so I pushed _build_java
down into the Mac port using a new hook "_check_port_build".
In the process I noticed a bunch of code which could be shared
between all ports and thus got rid of _tests_for_disabled_features
and version() copy/paste between all webkit ports.
I also made check_build only bother to check for ImageDiff if we're
using pixel tests.

WebKit should have more robust last-chance font fallback on Windows​https://bugs.webkit.org/show_bug.cgi?id=37473
<rdar://problem/7789438> Crash in FontFallbackList::determinePitch
<rdar://problem/7233762> Crash in FontFallbackList::fontDataAt

Look harder for a suitable last-resort font. Previously, we checked for
"Times New Roman" followed by DEFAULT_GUI_FONT.

Modify run_webkit_tests.py to not call sys.exit() at the end of test
run; doing so makes it more difficult to embed the routine for,
among other things, unit tests. We push the exit calling up into
new-run-webkit-tests.

This patch separates the begin/write/end cycle of decoding network
bytes and putting them into a document from the rest of the loading
machinery. The code and state required to write bytes into a document
doesn't interact very much with the rest of the loading machinery.

This patch is an intermediate step towards making the StyleChecker
class a generalized file processor that can do arbitary operations
on the files corresponding to a list of paths. This patch
also simplifies the unit-testing of patch-checking code.

Scripts/check-webkit-style:

Updated to use the new PatchChecker class.

Scripts/webkitpy/style/checker.py:

Refactored the StyleChecker.check_patch() method into the
check() method of a new PatchChecker class.

Scripts/webkitpy/style/checker_unittest.py:

Refactored the unit tests as necessary, changing the
StyleCheckerCheckPatchTest class to a PatchCheckerTest class.

new-run-webkit-tests currently has one huge function for
dealing with all options-parsing.
This patch is a first attempt at trying to split that large
function down into smaller (hopefully more readable?) chunks
dealing with the different areas of options.
For example, it would make sense to move configuration
options off into some module which deals with the vagries of
WebKit's configuration system. It would also make sense to move
Chromium options off onto the Chromium port object (where they are used).
It may make sense to move results.json options over to the results.json code.
This change is a first iteration, and we will certainly need more
refinement to this code over time. Hopefully I didn't make things
harder to read here.